zoukankan      html  css  js  c++  java
  • 区分JavaScript中的undefined,null和NaN

    区分underfined,null和NaN

    先看看下面语句的运行结果:

     1: var a; 
     2: alert(a); //显示"undefined"
     3: alert(typeof a); //显示"undefined"
     4: alert(b); //显示"undefined"

    以上说明a的值和类型都是'underfined'

     1: var a = null; 
     2: alert(a); //显示"null"
     3: alert(typeof a); //显示"object"

    以上说明赋值为null的变量,值为null,类型为object

     1: var b;
     2: alert(null==b); // 显示"true"
     3: alert(null == undefined); //显示"true "

    以上说明undefined与null是相等的

     1: var a1; //值和类型都是'underfined'
     2: var a2 = null; //值为null,类型为object
     3: alert(a1 == a2); //显示"true"

    以上两例说明null和underfind很相似,至少undefined与null是相等的。

     1: alert(100 + null); //显示"100"
     2: alert(100 + undefined); //显示"NaN" 

    以上说明null和underfind虽然很相似,但还是有小区别的,嘿嘿!

    underfined: 未知的变量名,或未赋值的变量。
    null: 特殊的object
    NaN: 特殊的number

     1: alert(typeof(undefined));//显示 'undefined'
     2: alert(typeof(null));//显示 'object'
     3: alert(typeof(""));//显示 'string'
     4: alert(typeof(0));//显示 'number'
     5: alert(typeof(false));//显示 'boolean'
     6: 
     7: var a7 = NaN;
     8: var a8 = undefined; 
     9: 
     10: alert(typeof a7); //显示"number"
     11: alert(typeof a8); //显示"undefined"
    以上说明NaN是一种特殊的number,和null、undefined都不会相等。
     

    函数参数没有和为空的判断

    先看看下面的例子:

     1: Test = function(a)
     2: {
     3: alert(typeof a); 
     4: } 
     5:  
     6: Test(); //没传参数,运行结果为"underfined"
     7: Test(null); //传了空参数,运行结果为"object", 如果要使用a.length等,就会报错,因为对象为空!

    正确的参数检查是:

     1: Test = function(v)
     2: {
     3: if (v !== null && typeof v != 'undefined') 
     4: {
     5: //使用v的属性,例如v.length, v.property
     6: // if (v.offsetX != undefined) 
     7: // if ( value == undefined )
     8: }
     9: }

    当然,也可以用 if(v) 来简化编码,可以检查v没给定和v为null的情况,但要注意,如果传入一个boolean的true或false,用if(v)就意味着 if( v == true),代码逻辑可能不是你想要的结果!

  • 相关阅读:
    「JXOI2018」游戏
    「CTSC2018」假面
    CodeForces
    CodeForces
    [Lydsy1710月赛] 小B的数字
    OpenJ_Bailian
    [SDOI2010] 地精部落
    CodeForces
    CodeForces
    [NOI2009] 管道取珠
  • 原文地址:https://www.cnblogs.com/Mainz/p/JS_Javascript_Undefined_NULL.html
Copyright © 2011-2022 走看看