undefined是JavaScript语言中定义的五个原始类中的一个,换句话说,undefined并非程序报错,而是程序容许的一个值。javascript
not defined是javascript在运行咱们的javascript代码时,遇到没有定义就用来console或者运算的变量时爆出来的错误。java
那么问题来了:在许多的javascript教程中都介绍有javascript变量即便不定义也能够直接拿来使用,可是请注意,这个使用是指能够被赋值,可是不能够被运算。看一个例子json
[javascript] view plain copyspa
在上面的代码中,第一个alert能够正常弹窗为123;可是第二个alert是不会执行的,由于使用了没有定义的temp4来运算,这是不容许的。.net
实际用在哪里? 做兼容不要报错,传值若是为空不报错对象
eg: 兼容问题blog
(window.XMLHttpRequest)和(XMLHttpRequest) 前者返回undefine 后者返回 not define(报错)教程
赋值问题ip
function a(json){get
json.b = json.b || {} //若是不或上{}空对象,外面不传参数,会报错,由于外面传进来的是一个null
//json是一个not define的值,就给他做赋值或者运算操做,就会报错
return json.b;
}
console.log(a());
另一些注意地方
var a = null;
var b = false;
var c;
var d = {};
if(a){ // 除了d,其他打印结果为1
console.log(1);
} else {
console.log(2);
}
d.t = 4;
console.log(d); // object {t:4}
console.log(d.t); // 4
a.t = 2; // not define 只要定义变量的布尔值是false,那么全不能传入属性
console.log(a.t);
b.t = 1;
console.log(b.t);
c.t = 3;
console.log(c.t);
最终结果 2 object {t:4} 4 't' not define