Is placing “var” keyword before every definied variable in Javascript is a good practice?
我总是在每个变量之前放置var关键字。 我想知道它的正确性。 代码正在运作,但这是一个好习惯吗?
1 2 3 4 5 6 7 8 | $(document).ready(function() { var something = 34; var v = $(body).find('p.lol'); $.ajax({ success: function(a) { var k = a.sdf; something = k+0.7; ...etc... |
实际上,它不是编码实践。如果使用函数在函数中定义变量
var关键字。它本地定义,否则变量将全局定义,您可以在函数外部访问。
1 2 3 4 5 6 7 | function test(){ var message ="hi"; //local variable variable ="bye"; } test(); alert(message); //undefined alert(variable);//bye |
是。如果在严格模式下使用它,将抛出错误。试试吧:
1 2 3 4 5 6 7 8 9 | (function(){ "use strict"; try{ myNum = 0; } catch(e) { alert("Error:" + e); } })(); |
此代码将返回如下内容:
错误:ReferenceError:分配给未声明的变量myNum
更多信息:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/Strict_mode
http://msdn.microsoft.com/en-us/library/ie/br230269%28v=vs.94%29.aspx
http://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javascript-strict-mode/
始终声明变量(以避免意外污染全局对象)是一种很好的做法,但JavaScript有一种称为提升的东西。
基本上,它意味着变量总是作用于函数(即不像其他语言一样在循环内或其他语句块中),因此在每个函数的开头执行所有声明是一个好习惯。
使用
这是一个类似的问题。
这是一个很好的做法,因为你明确定义了范围。如果不使用var关键字,则实际上是在创建全局变量。想象一下,在该实例中自动声明文件顶部之间的变量。
这会创建局部变量:
1 2 | var someVarA = 23; var someVarB = 25; |
这会自动创建全局变量(如果未在其他地方声明):
1 2 | someVarA = 23; someVarB = 25; |
但是,这与在每个变量前面放置var(注意逗号)相同:
1 2 | var someVarA = 23, someVarB = 25; |