[英]IF a function is assigned to a variable declared using var and let what is the difference?
[英]Javascript function assigned to variable with var
我使用http://js2coffee.org将CoffeeScript代码转换为JavaScript
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
还有其他意义吗?
是的,您必须将var
放在变量名之前。 这样,您可以在当前作用域中声明变量-否则JS将在外部作用域中搜索变量,如果未在任何作用域中声明-则将其设为全局变量。 据我所知,在strict
模式下,即使全局变量也应在全局空间中用var
声明。
PS这对所有变量均有效,不仅对分配了功能的变量有效。
另一个原因是垃圾回收。 任何不带var关键字创建的变量都将在全局范围内创建,并且永远不会进行垃圾回收,这会导致内存泄漏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.