注意:从ECMAScript版本3或5的角度提出了这个问题.在ECMAScript 6发布中引入新功能后,答案可能会过时.
varJavaScript中关键字的功能到底是什么,有什么区别
var someNumber = 2;
var someFunction = function() { doSomething; }
var someObject = { }
var someObject.someProperty = 5;
Run Code Online (Sandbox Code Playgroud)
和
someNumber = 2;
someFunction = function() { doSomething; }
someObject = { }
someObject.someProperty = 5;
Run Code Online (Sandbox Code Playgroud)
?
你什么时候使用其中任何一个,为什么/它做什么?
这是我在javascript中学习范围时发现的有趣内容.
码
var foo = "This is a global variable.";
var bar = function() {
alert(foo);
foo = "Value has been modified";
}
bar();
alert(foo);
Run Code Online (Sandbox Code Playgroud)
这给出了您认为可以获得的正常响应,但如果我更改了这一行:
从:
foo = "Value has been modified";
Run Code Online (Sandbox Code Playgroud)
至:
var foo = "Value has been modified";
Run Code Online (Sandbox Code Playgroud)
我为foo得到了一个未定义的值,为什么会这样?既然函数是全局范围的,那它怎么不接受前面的var关键字呢?
编辑
现在我基本了解var foo功能栏中发生的事情,因为var关键字并且被提升,它将获得最大的重要性,但它将在没有分配值的情况下被提升.