Difference between declaring variable
本问题已经有最佳答案,请猛点这里访问。
可以声明变量的方式有什么区别?
1 | a = 5; |
和
1 | var a = 5; |
与范围有任何关系吗?
大多数情况下,除了绝对需要创建全局变量之外,最好创建局部变量。
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
这是值得做的,因为将无法察觉的错误转化为明显的错误。
一个声明一个变量,另一个声明不变量。
如果为尚不存在的变量赋值,则会在全局范围中隐式创建该变量。
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 } |