设置变量undefined和null

时间:2014-09-23 06:43:02

标签: jquery variables

我刚读了一些代码,我看到了这一行:

var foo = null, undefined;

当我测试变量时,它是null和undefined。

因此,我的问题,将变量设置为null和undefined的目的是什么? 我不明白。 谢谢你的解释。

3 个答案:

答案 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使其为空。但是你的比较也很重要

Fiddle Demo

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');