JavaScript的一些概念: typeof, null, 和 undefined
2016-07-11 00:00
926 查看
摘要: typeof 操作符返回一个字符串,表示未经求值的操作数(unevaluated operand)的类型。null 是一个 JavaScript 字面量,表示空值(null or an "empty" value),表示 "什么都没有"。undefined都指的是全局对象的一个属性"undefined".
typeof, null, 和 undefined
语法:typeof operand
参数:operand 是一个表达式,表示对象或原始值,其类型被返回。
描述E:此表总结了 typeof 可能的返回值。
实例:
Notes:
在JavaScript中,数组是一种特殊的对象类型。 因此 typeof [1,2,3,4] 返回 object。
null 是一个只有一个值的特殊类型。表示一个空对象引用。它是 JavaScript 的原始值之一。
null 是一个字面量(而不是全局对象的一个属性,undefined 是)
Note: 用 typeof 检测 null 返回是object。
Note: ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。
实例
在 JavaScript 中, undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。
一个未初始化的变量的值为undefined.
一个没有传入实参的形参变量的值为undefined.
如果一个函数什么都不返回,则该函数默认返回undefined.
在JavaScript中,undefined这个词有多重含义:
(1) 首字母大写的Undefined表示的是一种数据类型;
(2) 小写的undefined表示的是属于这种数据类型的唯一的一个值;
但这两种undefined都只能存在于文档或规范中,不能存在于JavaScript代码中.
在JavaScript代码中,我们看到的undefined最有可能是全局对象的一个属性,该属性的初始值是就是前面所说的原始值undefined.
还有种情况就是,这个undefined是个局部变量,就像其他普通变量一样,没有任何特殊性,它的值不一定是undefined,但通常情况下都是的.
下面我们所说的undefined,都指的是window.undefined这个属性.
实例:
这里必须使用严格相等运算符===,而不能使用普通的相等运算符==.
因为x == undefined成立还可能是因为x为null,在JavaScript中null== undefined是返回true的.
另外,还可以使用typeof来判断:
任何变量都可以通过设置值为 undefined 来清空。 类型为 undefined.
实例
person = undefined; // 值为 undefined, type is undefined
在编码很少直接使用到 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进行判断。
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
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。
2. Null
null 是一个 JavaScript 字面量,表示空值(null or an "empty" value),表示 "什么都没有"。即没有对象被呈现(no object value is present)。null 是一个只有一个值的特殊类型。表示一个空对象引用。它是 JavaScript 的原始值之一。
null 是一个字面量(而不是全局对象的一个属性,undefined 是)
Note: 用 typeof 检测 null 返回是object。
Note: ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。
实例
可以设置为 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.asphttps://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
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解