全局变量在jsfiddle中的意外行为

时间:2014-06-30 11:20:39

标签: javascript jsfiddle

我有代码,其中我有两个同名的变量。 第一个变量是全局变量,另一个变量是函数内部变量。根据规范,所有全局变量都附加到窗口对象,但是当我试图访问函数内部的全局变量时,它在jsfiddle中显示未定义但相同的代码在控制台中正常工作。

  var myVar='10';
  function check() {
    alert('Local : ' + myVar+ ', Global : ' + window.myVar); //window.myVar is undefined in jsfiddle
    var myVar;
  }

 check(); 

这种意外行为的原因是什么?

这是JSFiddle

1 个答案:

答案 0 :(得分:1)

为此你应该知道小提琴是如何工作的, 在您的情况下,您已经选择了onLoad选项,因此当整个页面像document.ready函数一样加载时,您的代码会被占用,所以它不是一个独立的脚本。 检查一下

var myVar='10';
alert(window.myVar);
function check() {

    var myVar= 5;    
    // Your are defining a local variable in this function
    // so, the global one is not visible.
    alert('Local : ' + myVar+ ', Global : ' + window.myVar);
}

check(); 

http://jsfiddle.net/sJ8Eu/1/

我改变的是,我选择了将代码包装在头部的选项,因此它就像一个脚本标记。它工作正常