繁体   English   中英

用var分配给变量的Javascript函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM