在Javascript中每个定义的变量之前放置“var”关键字是一个好习惯吗?

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定义局部变量。如果省略,变量将是全局变量,或者您可能会意外覆盖另一个变量的值。

这是一个类似的问题。


这是一个很好的做法,因为你明确定义了范围。如果不使用var关键字,则实际上是在创建全局变量。想象一下,在该实例中自动声明文件顶部之间的变量。

这会创建局部变量:

1
2
var someVarA = 23;
var someVarB = 25;

这会自动创建全局变量(如果未在其他地方声明):

1
2
someVarA = 23;
someVarB = 25;

但是,这与在每个变量前面放置var(注意逗号)相同:

1
2
var someVarA = 23,
    someVarB = 25;