我刚读了一些代码,我看到了这一行:
var foo = null, undefined;
当我测试变量时,它是null和undefined。
因此,我的问题,将变量设置为null和undefined的目的是什么? 我不明白。 谢谢你的解释。
答案 0 :(得分:2)
正如评论中所提到的,你可能没有以正确的方式测试foo,变量不能是未定义的和 null。
var foo = null, undefined;
alert(foo); //shows null
alert(typeof foo); //shows object (not undefined)
那是怎么回事?逗号表示您正在声明另一个变量。由于undefined已经是一个关键字,因此该语句的特定部分无效。但是,如果你这样做:
var foo = null, undefined1;
alert(foo); //shows null
alert(typeof foo); //shows object (not undefined)
alert(undefined1); //shows undefined
alert(typeof undefined1); //shows undefined
您可以看到您实际上声明了一个没有初始值的新变量undefined1
。
答案 1 :(得分:0)
该陈述的目的是在具有相同名称的变量中具有undefined
的本地声明。
例如:
// declare two local variables
var foo = null, undefined;
console.log(foo === undefined); // false
它类似于:
function test(foo, undefined)
{
console.log(foo === undefined); // false
}
test(null); // only called with a single argument
这通常不是必需的,因为理智的浏览器不允许任何人重新定义undefined
的含义,jslint会抱怨:
保留名称' undefined'。
基本上,我建议不要这样做:
var foo = null;
顺便说一下,上述声明不要与以这种方式使用comma operator相混淆:
var foo;
foo = 1, 2;
console.log(foo); // 2
答案 2 :(得分:0)
简短:那没用了
没有赋值变量undefined
。您可以指定null
使其为空。但是你的比较也很重要
if(foo == null) //true
alert('1');
if(foo == undefined) //true
alert('2');
现在严格比较===
if(foo === null) //false............can be true if assigned to null
alert('3');
if(foo === undefined) //true.......can be flase if assigned to null
alert('4');