2014-06-30 24 views
0

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

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

check(); 

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

这里是JSFiddle

+1

检查在这里:http://stackoverflow.com/questions/18835396/global-vars-with-jsfiddle –

+1

重复http://stackoverflow.com/questions/4862193/javascript-global-variables – Kasma

+0

以普通方式访问全局变量不要使用window.myVar它应该是myVar。以及你已经定义myvar为一个局部变量,它是未定义的,所以你会得到undefined在本地上下文 –

回答

1

这个你应该知道怎么捣鼓的作品, 在这里,你的情况,你所选择的选项的onLoad,当整个页面加载像的document.ready功能,使你的代码excutes,所以它不是一个独立的脚本。 检查这个

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/

我改变,我选择的包裹在头上的代码的选项,所以它就像一个脚本标记。它工作正常

+0

很好的解释。谢谢。 – webworm