JavaScript的一些概念: typeof, null, 和 undefined

typeof, null, 和 undefined数组

1. typeof

typeof 操做符返回一个字符串,表示未经求值的操做数(unevaluated operand)的类型。浏览器

语法:typeof operand 参数:operand 是一个表达式,表示对象或原始值,其类型被返回。 描述E:此表总结了 typeof 可能的返回值。函数

类型 结构
Undefined "undefined"
Null "object" 
布尔值 "boolean"
数值 "number"
字符串 "string"
Symbol (ECMAScript 6 新增) "symbol"
宿主对象(JS环境提供的,好比浏览器) Implementation-dependent
函数对象 (implements [[Call]] in ECMA-262 terms) "function"
任何其余对象 "object"

实例:编码

typeof "John"                // 返回 string
typeof ""                    // 返回 string
typeof 3.14                  // 返回 number
typeof true                  // 返回 boolean
typeof false                 // 返回 boolean
typeof [1,2,3,4]             // 返回 object
typeof {name:'John', age:34} // 返回 object

Notes:
在JavaScript中,数组是一种特殊的对象类型。 所以 typeof [1,2,3,4] 返回 object。lua

2. Null

null 是一个 JavaScript 字面量,表示空值(null or an "empty" value),表示 "什么都没有"。即没有对象被呈现(no object value is present)。 null 是一个只有一个值的特殊类型。表示一个空对象引用。它是 JavaScript 的原始值之一。 null 是一个字面量(而不是全局对象的一个属性,undefined 是)code

Note: 用 typeof 检测 null 返回是object。
Note: ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。对象

实例ip

能够设置为 null 来清空对象:
var person = null;     // Value is null, but type is still an object

也能够设置为 undefined 来清空对象:
var person = undefined; // 值为 undefined, type is undefined

3. Undefined

undefined有多重角色,一般状况下,咱们所说的undefined都指的是全局对象的一个属性"undefined".文档

在 JavaScript 中, undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。字符串

一个未初始化的变量的值为undefined. 一个没有传入实参的形参变量的值为undefined. 若是一个函数什么都不返回,则该函数默认返回undefined.

在JavaScript中,undefined这个词有多重含义:
(1) 首字母大写的Undefined表示的是一种数据类型; (2) 小写的undefined表示的是属于这种数据类型的惟一的一个值; 但这两种undefined都只能存在于文档或规范中,不能存在于JavaScript代码中.

在JavaScript代码中,咱们看到的undefined最有多是全局对象的一个属性,该属性的初始值是就是前面所说的原始值undefined.
还有种状况就是,这个undefined是个局部变量,就像其余普通变量同样,没有任何特殊性,它的值不必定是undefined,但一般状况下都是的.

下面咱们所说的undefined,都指的是window.undefined这个属性.

实例:

var person; // Value is undefined, type is undefined

可使用严格相等运算符来判断一个值是不是undefined:
var x;
if ( x === undefined ) {
   // 执行到这里
} else {
   // 不会执行到这里
}

这里必须使用严格相等运算符===,而不能使用普通的相等运算符==.
由于x == undefined成立还多是由于x为null,在JavaScript中null== undefined是返回true的.

另外,还可使用typeof来判断:

var x;
if (typeof x === 'undefined') {
   // 执行到这里
}

任何变量均可以经过设置值为 undefined 来清空。 类型为 undefined. 实例 person = undefined; // 值为 undefined, type is undefined

4 NaN 值

NaN 是一个全局对象的属性,表示 Not-A-Number 的值,是一个特殊值。

在编码不多直接使用到 NaN。一般都是在计算失败时,做为 Math 的某个方法的返回值出现的(例如:Math.sqrt(-1))或者尝试将一个字符串解析成数字但失败了的时候(例如:parseInt("blabla"))。

NaN 不等于本身, 即 NaN == NaN 返回的是 false 判断一个值是不是 NaN, 必须使用 Number.isNaN() 或 isNaN() 函数

isNaN() 函数用于检查其参数是不是非数字值。 isNaN() 函数一般用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是不是合法的数字。固然也能够用 isNaN() 函数来检测算数错误,好比用 0 做除数的状况。 若是isNaN函数的参数不是Number类型, isNaN()会首先尝试将这个参数转换为数值,而后才会对转换后的结果是不是NaN进行判断。

isNaN(123);   // 返回 false
isNaN(-1.23); // 返回 false
isNaN(5-2);   // 返回 false
isNaN(0);     // 返回 false
isNaN("0");   // 返回 false
isNaN(true);  // 返回 false: 由于Number(true)是1 
isNaN(false); // 返回 false: 由于Number(false)是0 
isNaN(null);  // 返回 false: 由于Number(null)是0 

isNaN("Hello");      // 返回 true
isNaN("2016/07/11"); // 返回 true
isNaN(NaN);       // 返回 true
isNaN(undefined); // 返回 true
isNaN({});        // 返回 true

// dates
isNaN(new Date());                // 返回 false
isNaN(new Date().toString());     // 返回 true

5 undefined 和 Null 的区别

typeof undefined    // 返回undefined
typeof null         // 返回object (bug in ECMAScript, should be null)
null === undefined  // 返回false
null == undefined   // 返回true

6 underfined和"undefined"的区别:

undefined是JavaScript提供的一个"关键字",而"undefined"就是一个字符串,只是字符串的内容长得和undefined同样而已。

typeof undefined    // 返回undefined
typeof "undefined"  // 返回string

参考连接:

http://www.w3school.com.cn/jsref/jsref_isNaN.asp
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/isNaN
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/undefined

相关文章
相关标签/搜索