javascript中的作用域
我遇到了以下奇怪的代码:javascript中的作用域,javascript,Javascript,我遇到了以下奇怪的代码: function foo(){ works = {hello:"world"}; function bar(){ alert('does not work'); } var notwork = {hello:"world"}; } foo(); alert(works.hello); alert(notwork.hello); 有人能给我解释一下为什么工作有效而不工作无效吗?或者给我指出一个详细解释这一点的好资源 多谢各
function foo(){
works = {hello:"world"};
function bar(){
alert('does not work');
}
var notwork = {hello:"world"};
}
foo();
alert(works.hello);
alert(notwork.hello);
有人能给我解释一下为什么工作有效而不工作无效吗?或者给我指出一个详细解释这一点的好资源
多谢各位 var notwork创建仅对函数运行时有效的局部变量
works创建在整个javascript运行时有效的全局变量。var notwork创建仅在函数运行时有效的局部变量
works创建在整个javascript运行时有效的全局变量。您遗漏了
var
关键字,因此正在全局对象上定义works
你想要
var works = ...
您遗漏了
var
关键字,因此正在全局对象上定义works
你想要
var works = ...
var
将变量声明为其在中定义的函数的“局部”
如果没有var
,您的工作
变量是全局变量:它可以在任何地方看到/访问/使用
使用var
,您的notwork
变量是foo
函数的本地变量:无法从该函数外部查看/使用该变量
有关更多信息,请参阅的文档,其中说明(引用): 变量的范围是当前变量 函数或,对于声明的变量 在函数外部,当前 应用程序 在函数外部使用
var
是不正确的
可选;将值赋给
未声明的隐式变量
将其声明为全局变量。
但是,建议始终 使用
var
,在
在以下情况下的功能:
- 如果变量在包含函数的范围内(包括全局 范围)具有相同的名称
- 如果递归函数或多个函数使用具有相同名称和 希望这些变量是局部变量
var
将变量声明为其在中定义的函数的“局部”
如果没有var
,您的工作
变量是全局变量:它可以在任何地方看到/访问/使用
使用var
,您的notwork
变量是foo
函数的本地变量:无法从该函数外部查看/使用该变量
有关更多信息,请参阅的文档,其中说明(引用): 变量的范围是当前变量 函数或,对于声明的变量 在函数外部,当前 应用程序 在函数外部使用
var
是不正确的
可选;将值赋给
未声明的隐式变量
将其声明为全局变量。
但是,建议始终 使用
var
,在
在以下情况下的功能:
- 如果变量在包含函数的范围内(包括全局 范围)具有相同的名称
- 如果递归函数或多个函数使用具有相同名称和 希望这些变量是局部变量
不。局部变量在函数执行后非常有效。这就是Javascript有闭包的原因。正如我所同意的,在本例中,变量在函数执行后无效。如果我错了,请纠正我,谢谢!不。局部变量在函数执行后非常有效。这就是Javascript有闭包的原因。正如我所同意的,在本例中,变量在函数执行后无效。如果我错了,请纠正我,谢谢!