2

我使用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

4

2 回答 2

5

是的,你必须把var变量名放在前面。通过这种方式,您在当前范围内声明变量 - 否则 JS 将在外部范围内搜索它,如果未在任何范围内声明 - 将使其成为全局变量。据我所知,在strict模式下,即使是全局变量也应该var在全局空间中声明。

PS 这对所有变量都有效,不仅适用于您分配函数的变量

于 2013-05-29T11:27:38.257 回答
1

另一个原因是垃圾收集。没有使用 var 关键字创建的任何变量都是在全局范围内创建的,并且永远不符合垃圾回收的条件,从而存在内存泄漏的机会。

于 2013-05-29T12:39:37.087 回答