Javascript 理解JS中的作用域

Javascript 理解JS中的作用域,javascript,scope,Javascript,Scope,我试图理解JavaScript中的变量作用域,我遇到了浏览器出现的这个奇怪问题 (function() { console.log(myvar); // undefined myvar = "local value"; })(); console.log(myvar); 它还印刷了: local value local value 但当我尝试在html页面浏览器中包含相同的in标记时,抛出javascript错误 myvar未定义 发生了什么事?这个问题实际上并不十分相关,因为您没有

我试图理解JavaScript中的变量作用域,我遇到了浏览器出现的这个奇怪问题

(function() {
console.log(myvar); // undefined
myvar = "local value";
})();
console.log(myvar);   
它还印刷了:

local value 
local value
但当我尝试在html页面浏览器中包含相同的in标记时,抛出javascript错误

myvar未定义


发生了什么事?

这个问题实际上并不十分相关,因为您没有在任何地方使用
var
关键字,这意味着您总是在全局范围内,所以范围在该代码中根本不相关,除了变量是全局的且可在任何地方访问。如果在声明之前记录变量在某个地方起作用,它会做一些奇怪的事情听起来像是在scratchpad的错误版本上,在FF 29.0.1之后的版本中测试它,我正确地得到了预期的“myvar未定义”。正如@adeneo所说,这里没有范围问题,因为myvar是在全球范围内的。@adeneo好的,谢谢。我正在阅读本教程,并试图执行该示例。在很少的地方起作用。。所以我想知道为什么