我有代码,其中我有两个同名的变量。 第一个变量是全局变量,另一个变量是函数内部变量。根据规范,所有全局变量都附加到窗口对象,但是当我试图访问函数内部的全局变量时,它在jsfiddle中显示未定义但相同的代码在控制台中正常工作。
var myVar='10';
function check() {
alert('Local : ' + myVar+ ', Global : ' + window.myVar); //window.myVar is undefined in jsfiddle
var myVar;
}
check();
这种意外行为的原因是什么?
这是JSFiddle
答案 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();
我改变的是,我选择了将代码包装在头部的选项,因此它就像一个脚本标记。它工作正常