我想懂得JS你不知道的JavaScript程序员

JS中的not defined和undefined

2016-11-23  本文已影响122人  佳勋学长

JS中关于变量常遇到的错误有两个,一个是“xx is not defined”,另一个是“undefined”。

一.区别

1."not defined"

var a;  //只声明变量,未赋值
console.log(a);  //undefined

2."undefined"

//var a;
console.log(a);  //未声明变量且未赋值,a is not defined

__结论:
声明变量却没有对其进行赋值,即变量undefined;
未声明也未赋值变量,即变量not defined.
undefined:不明确的,也就是不知道用来干嘛的;
not defined: 未定义的. __


注:若变量a没有通过var声明,但是却赋值了,如:

a = 1;
console.log(a);  //1
console.log(window.a)  //1

当变量不加var声明时,默认在变量前面自动添加window.,也就成了window的属性。

再看一个例子:

(function aa(){
    var a = 1;
        b = 2;
})();
console.log(a);  //a is not defined
console.log(window.a);  //undefined
console.log(b);  //2
console.log(window.b);  //2

结论:
如果在方法中声明变量,则为局部变量.
如果是在全局域中声明,则为全局变量.


二.判断

两者都可以用typeof进行判断:

var a;  
if (typeof(a) == "undefined") {
    alert("undefined");
} 
if (typeof(b) == "undefined") {
    alert("undefined");
}

三.null

既然提到not defined和undefined,有一个不得不提的就是null了。

 console.log(typeof(null));  //Object

null是js的关键字,其含义为“非对象”。不过通常认为它是null这个类型下的唯一一个成员,它可以表示数字、字符和对象是“无值”的

undefined也是表示无值

    console.log(null == undefined);  //true
    console.log(null === undefined);  //false
上一篇下一篇

猜你喜欢

热点阅读