gpt4 book ai didi

javascript - CoffeeScript 总是以匿名函数的形式返回

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:26 26 4
gpt4 key购买 nike

我正在尝试编写一些 CoffeScript 函数,它会在选中第一个复选框时检查表格中的所有复选框。

我在 CoffeeScript 中的函数如下所示:

$("table.tableview th input:checkbox").live 'click', -> 
checkedStatus = this.checked
$("table.tableview tbody tr td:first-child input:checkbox").each ->
this.checked = checkedStatus

它非常适合选中所有复选框。但是,取消选中时它不起作用。编译后的 JS 如下所示:

$("table.tableview th input:checkbox").live('click', function() {
var checkedStatus;
checkedStatus = this.checked;
return $("table.tableview tbody tr td:first-child input:checkbox").each(function() {
return this.checked = checkedStatus;
});
});

它不起作用,因为在第一个设置为 false 后函数的返回将为 false。然而,我不知道如何抑制 CoffeeScript 的这种默认返回行为。请帮忙。

当我按照 Flambino 的建议添加“true”时,我得到以下 JS

$("table.tableview th input:checkbox").live('click', function() {
var checkedStatus;
checkedStatus = this.checked;
$("table.tableview tbody tr td:first-child input:checkbox").each(function() {
return this.checked = checkedStatus;
});
return true;
});

我可以在函数中获取 return 语句的唯一方法是像这样把它放在一边:

$("table.tableview tbody tr td:first-child input:checkbox").each ->
this.checked = checkedStatus
true

我做错了什么?感谢到目前为止的帮助

最佳答案

如果你只是使用return(或者,等价的,undefined)作为函数的最后一行,CoffeeScript 编译器会给你没有return 的JS 完全没有。所以编写代码的最有效方式是

$("table.tableview th input:checkbox").live 'click', -> 
checkedStatus = this.checked
$("table.tableview tbody tr td:first-child input:checkbox").each ->
this.checked = checkedStatus
return
return

(当然,您可以安全地不使用第二个 return。只有 false 的返回值在 jQuery 中有效。)

还有一个提议的语法(-/>)用于定义一个没有返回值的函数;见issue 899 .

关于javascript - CoffeeScript 总是以匿名函数的形式返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com