使用var分配给变量的Javascript函数

时间:2013-05-29 11:25:22

标签: javascript scripting-language

我使用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还有其他意义吗?

2 个答案:

答案 0 :(得分:5)

是的,你必须在变量名之前加上var。通过这种方式,您可以在当前作用域中声明变量 - 否则JS将在外部作用域中搜索它,如果未在任何作用域中声明,则将使其成为全局变量。据我所知,在strict模式下,甚至全局变量都应该在全局空间中用var声明。

P.S。这适用于所有变量,不仅适用于将函数分配给

的变量

答案 1 :(得分:1)

另一个原因是垃圾收集。在没有var关键字的情况下创建的任何变量都是在全局范围内创建的,并且永远不会有资格进行垃圾回收,从而导致内存泄漏的机会。