关于javascript:声明变量之间的区别

Difference between declaring variable

本问题已经有最佳答案,请猛点这里访问。

可以声明变量的方式有什么区别?

1
a = 5;

1
var a = 5;

与范围有任何关系吗?


var a将创建局部变量。另一个将创建和/或设置全局变量。

大多数情况下,除了绝对需要创建全局变量之外,最好创建局部变量。


1
a = 5;

这将设置一个变量,如果尚未声明变量,那么它将在全局范围内创建(您可能不需要)。

1
var a = 5;

这将创建并设置变量。如果在函数内部,变量将在函数作用域中创建为局部变量,否则将全局创建。

另外值得注意的是,语句var a = 5将被提升到函数的顶部。即

1
2
3
4
5
6
function() {
    doSomestuff();
    a = 4;
    var a = 5;
    doOtherStuff();
}

实际上成了

1
2
3
4
5
6
function() {
    var a = 5;
    doSomestuff();
    a = 4;
    doOtherStuff();
}

有关详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var。

另外值得注意的是,如果使用严格模式,则无法使用= 5声明变量。必须使用var关键字。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

这是值得做的,因为将无法察觉的错误转化为明显的错误。


一个声明一个变量,另一个声明不变量。

var关键字用于声明变量,变量在当前范围内创建。

如果为尚不存在的变量赋值,则会在全局范围中隐式创建该变量。


a = 5将从任何范围声明一个全局变量。 var a = 5将在声明的范围内声明一个变量。

1
2
3
4
5
6
 a = 5;    //global variable
 var b = 6; // global variable
 function foo(){
  var c = 7; //local variable
  d = 9; //global variable
  }