在MDN上测试JavaScript示例

在MDN上测试JavaScript示例,javascript,firefox,google-chrome,Javascript,Firefox,Google Chrome,我在这里找到了以下JavaScript示例: 为什么console.log(myvar)返回“我的值”,而不是注释中指定的未定义的 我在Firefox和Chrome上进行了测试,得到了相同的结果 var myvar = "my value"; (function() { console.log(myvar); // undefined var myvar = "local value"; })();​ 事实上,输出是未定义的。 我认为这是因为myvar在范围中被重新定义 但如

我在这里找到了以下JavaScript示例:

为什么
console.log(myvar)
返回
“我的值”
,而不是注释中指定的
未定义的

我在Firefox和Chrome上进行了测试,得到了相同的结果

var myvar = "my value";

(function() {
  console.log(myvar); // undefined   
  var myvar = "local value";
})();​
事实上,输出是未定义的。 我认为这是因为myvar在范围中被重新定义

但如果在函数范围中注释myvar,输出将是“我的值”。 就像myvar是一个全局变量一样

-->

事实上,输出是未定义的。 我认为这是因为myvar在范围中被重新定义

但如果在函数范围中注释myvar,输出将是“我的值”。 就像myvar是一个全局变量一样


-->它的小提琴,由xdazz创建,类似于您的帖子->

在fiddle中,您不需要将
myvar
重新声明为局部变量,只需重置其值即可


它的小提琴,由xdazz创建,类似于你的帖子->

在fiddle中,您不需要将
myvar
重新声明为局部变量,只需重置其值即可


你确定吗?在真正的页面(比如jsbin或JSFIDLE,或者您自己的测试页面)上测试这样的东西总是一个更好的主意,而不仅仅是在控制台上。也就是说,按照承诺将代码粘贴到我的Firefox控制台日志
undefined
。试试这个,它会输出“我的值”@mt22:当然。您将代码更改为删除
var
。添加/删除关键字会更改行为。是否确定?在真正的页面(比如jsbin或JSFIDLE,或者您自己的测试页面)上测试这样的东西总是一个更好的主意,而不仅仅是在控制台上。也就是说,按照承诺将代码粘贴到我的Firefox控制台日志
undefined
。试试这个,它会输出“我的值”@mt22:当然。您将代码更改为删除
var
。添加/删除关键字会改变行为。
var myvar = "my value";

(function() {
  console.log(myvar); // undefined   
  var myvar = "local value";
})();​
var myvar = "local value";//redeclared variable as local
myvar = "local value";//reset global value