区分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),代码逻辑可能不是你想要的结果!

时间: 2024-07-29 16:32:33

区分JavaScript中的undefined,null和NaN的相关文章

区分JS中的undefined,null,"",0和false

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库 字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和 不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boole

javascript中的undefined,null,"",0和false的云集

在各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boolean值本身就是tru

JavaScript中的Undefined / Null 类型相关说明

1,综述: ※Undefined 和 Null是JavaScript中的两种数据类型(其他的类型还有:Boolean, String, Number, Object). ※Undefined类型只有一个值:undefined:Null类型也只有一个值:null. 2,Undefined类型相关说明: ※在使用了var声明了相关变量但未对其初始化时,这个变量的值就是undefined. ※这和未经声明(即未经定义)的变量不一样,如果使用未经声明的变量,会报错ReferenceError: s is

javascript中常见undefined与defined的区别

在JavaScript中相信"undefined"与"defined"对大家来说都肯定不陌生,但是又不是很清楚它们的区别,先看两个demo我们再说, 例1. console.log(parms); //在控制台出现 Uncaught ReferenceError: parms is not defined 例2. var flag; console.log(flag); //在控制台出现 undefined 通过上面两个例子就能很清楚的看出它两的区别了,not de

Javascript中的undefined、null、""、0值和false的区别总结

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boolean

Javascript中判断 Undefined 还是 Null 的方法

在 JavaScript 中, null 用于对象, undefined 用于变量,属性和方法. 对象只有被定义才有可能为 null,否则为 undefined. 如果我们想测试对象是否存在,在对象还没定义时将会抛出一个错误. 错误的使用方式: if (myObj !== null && typeof myObj !== "undefined") 正确的方式是我们需要先使用 typeof 来检测对象是否已定义: if (typeof myObj !== "un

javascript中的数据类型Null

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script type="text/javascript"> 7 8 /* 9 * Null(空值)类型的值只有一个,就是null 10 * null这个值专门用来表示一个为空的对象 11 * 使用typeof检查一个nu

在 JavaScript 中为什么 typeof null 的结果是 object?

java 中的 null:既是对象,又不是对象,史称「薛定谔的对象」. typeof null==='object';  ..//true null instanceof Object  //false nullinstanceofObject===false 而 null instanceof null 会抛出异常: UncaughtTypeError:Right-hand side of 'instanceof'isnotan object 这是一个历史遗留下来的 feature(or bu

区分javascript中的toString(),toLocaleString(),valueOf()方法

首先我们随意创建一个对象,这很简单,打开FF浏览器的Firebug切换到控制台或者打开webkit浏览器的审查元素功能. 输入以下内容: var obj1=[1,2,3,4,5] var obj2=[5,4,3,2,1] var obj3=[obj1,obj2] 接着试试调用obj3的toString(),toLocaleString(),valueOf()方法: 根据输出结果可以发现toString()和toLocaleString()方法输出的内容是一样的,且都为字符串形式.而valueOf