还有就是书上指出的一个问题在函数内部不使用var关键字定义的变量作为全局变量
function test(){
str = "It's a fine day today!";
}window.onload = function(){
alert(str);
};
我在运行上述代码时报错:str未定义但是使用如下却没有问题
window.onload = function(){
alert(window.str);
};
是否在函数内部不使用var创建的变量, 在函数结束后作用域原因而导致无法使用
而此时JavaScrip解释器会在代码执行之前创建一个全局对象,比如此处的window
而str会作为此对象的一个属性保存下来
要访问这个变量,必须通过他的对象去访问??望老大们指点一二
function test(){
str = "It's a fine day today!";
}window.onload = function(){
alert(str);
};
我在运行上述代码时报错:str未定义但是使用如下却没有问题
window.onload = function(){
alert(window.str);
};
是否在函数内部不使用var创建的变量, 在函数结束后作用域原因而导致无法使用
而此时JavaScrip解释器会在代码执行之前创建一个全局对象,比如此处的window
而str会作为此对象的一个属性保存下来
要访问这个变量,必须通过他的对象去访问??望老大们指点一二
str = "It's a fine day today!";
} -------------------------------------
window.onload = function(){ //A
alert(typeof(str));
};
window.onload = function(){ //B
alert(typeof(window.str));
};
说实话这两个完全没有看到什么区别,
数据类型完全一样,
str = "I Love You!";
}
alert(window.str);//undefined
test();//要调用完后,才会定义这个变量
alert(window.str);//I Love You!
看样子 LZ 还是没有理解 JavaScript 闭包的概念.
function test(){
str = "It's a fine day today!";
}window.onload = function(){
alert(window.str);
}; test()函数不被调用,使用window.str是可以直接打出str的值的
如果说必须在test()调用后才存在此变量那书上指出的不使用var声明的变量JavaScript将会自动隐式声明,并且作为全局对象的属性
那此处不是存在矛盾吗?
如果调用window.str,就是找window的属性,找不到就是null,不调用其属性或者方法,就不会报异常另外我觉得""和0是一个特例,几乎就是同一个东东,isNaN("")返回也是false
但null,undefined等都不一样
undefined === undefined
结果都是真undefined == null
结果也是真NaN恒不等于任何值包含它自身应该是这样的
就是"" 和 0有点迷糊