Javascript中undefined和not defined有什么区别?

undefined是JavaScript语言中定义的五个原始类中的一个,换句话说,undefined并不是程序报错,而是程序允许的一个值。

not defined是javascript在运行我们的javascript代码时,遇到没有定义就用来console或者运算的变量时爆出来的错误。

那么问题来了:在许多的javascript教程中都介绍有javascript变量即使不定义也可以直接拿来使用,但是请注意,这个使用是指可以被赋值,但是不可以被运算。看一个例子

 

[javascript] view plain copy

  1. var temp;  
  2. temp2 = 123;  
  3. alert(temp2);  
  4. temp3 = temp4+1;  
  5. alert(temp3);  

在上面的代码中,第一个alert可以正常弹窗为123;但是第二个alert是不会执行的,因为使用了没有定义的temp4来运算,这是不允许的。

 

实际用在哪里? 作兼容不要报错,传值如果为空不报错

eg:  兼容问题

   (window.XMLHttpRequest)和(XMLHttpRequest)  前者返回undefine 后者返回 not define(报错)

       赋值问题

function a(json){

    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

转载于:https://my.oschina.net/u/2949632/blog/810510

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值