JS基础 之 null undefined NaN在使用if做判断时,是真还是假

js中对于一些值使用if语句进行判断时,其逻辑值是“真”还是“假”的总结

  var data=1;
  var data.data=1;
  if(data.data)//false

  var data={}
  var data.data=1;
  if(data.data)//true

  var data=1;
  if(data.data)//false
  if(data.data.data)//报错(*1)

  if(data)//报错 与(*1)中的报错原因一样
  
  if(null)//false
  if(!null)//true
  if(undefined)//false 注:(*1)中的data.data.data是由于是未定义而报错,而这里的未定义返回的是false
  if(!undefined)//true
  
  if(typeof data)//true
  if(typeof data==undefined)//false
  /*
      看到7的结果可能表示怀疑,请看如下解释
      typeof 返回的是一个字符串  由于data未定义,typeof data返回的是undefined字符串
      所以if(undefined字符串)结果为真
      而undefined相当于是js内置的一个对象吧
      所以typeof data==undefined的结果为false
  */
  if(typeof data=='undefined')//true
  
  if(0)//false
  var n=0;
  if(n)//false
  var m="0";
  if(m)//true
  if(m==n)//true
  /*
      在js中数字0代表false,非0则为true
      m是字符串0,所以为true
      但是由于js不是强类型语言,在对这些类型做==运算时,如果只是纯数字的话,会当做数字进行比较
      如:
      if(0.0=='0')//true
      if('0.0'==0)//true
      但是
      alert('0.0'+0)//0.00
      alert(0+'0.0')//00.0
      alert(0+0.0);//0
      alert(0.0+'0')//00              
  */ 

  var arr=[];
  if(arr=="")//true
  
  //对于纯数字的字符串和数字使用+(加)时,都被当成了字符串
  //对于寸数字的字符串和数字使用/(除)时,都被当成了数字
  /*
      这里用该说js比较灵活吧,因为字符之间的操作就没有/(除)操作
  */
  
  alert('aa'/2)//NaN
  if('aa'/2)//false
  if(!'aa'/2)//false
  if(!('aa'/2))//true
  
  if('')//false
  if(!'')//true



转载于:https://my.oschina.net/juntercode/blog/336787

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值