ResetControls = ->
$("#menu_item_url").val ""
$("#menu_item_name").val ""
$("#resource_id").prop "selectedIndex", 0
$("#resource_type_id").prop "selectedIndex", 0
它将其转换为:
var ResetControls;
ResetControls = function() {
$("#menu_item_url").val("");
$("#menu_item_name").val("");
$("#resource_id").prop("selectedIndex", 0);
return $("#resource_type_id").prop("selectedIndex", 0);
};
转换后的JavaScript代码中的第一行表明,在将函数赋值给变量时,将var关键字放在变量名之前是一种最佳实践。是这样吗?怎么样?
根据我的理解,var
在递归调用中很方便,你的意图是在递归函数中复制变量(否则它们将在递归调用之间共享或保持静态)。
var
还有其他意义吗?
答案 0 :(得分:5)
是的,你必须在变量名之前加上var
。通过这种方式,您可以在当前作用域中声明变量 - 否则JS将在外部作用域中搜索它,如果未在任何作用域中声明,则将使其成为全局变量。据我所知,在strict
模式下,甚至全局变量都应该在全局空间中用var
声明。
P.S。这适用于所有变量,不仅适用于将函数分配给
的变量答案 1 :(得分:1)
另一个原因是垃圾收集。在没有var关键字的情况下创建的任何变量都是在全局范围内创建的,并且永远不会有资格进行垃圾回收,从而导致内存泄漏的机会。