null和undefined的区别
2016-03-02 21:27
281 查看
不同之处:
null是js语言的关键字,它表示一个特殊值,常用来描述“空值”。对null执行typeof运算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”。但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字、字符串、和对象是“无值”的。
js还可以用undefined来表示值的空缺。用未定义的值表示更深层次的“空值”。undefined是变量的一种取值,表明变量没有初始化,如果要查询对象属性或数组元素的值时返回undefined则说明这个属性或元素不存在。如果函数没有返回任何值,则返回undefined。引用没有提供实参的函数形参的值也只会得到undefined。undefined是预定义的全局变量,它和null不一样,它不是关键字,它的值就是“未定义”。如果使用typeof运算符得到undefined的类型,则返回“undefined”,表明这个值是这个类型的唯一成员。
相同之处:
尽管null和undefined是不同的,但它们都表示“值的空缺”,两者往往可以互换。判断相等运算符“==”认为两者是相等的,要使用严格相等运算符“===”来区分它们。在希望值是布尔类型的地方它们的值都是假值,和false类似。null和undefined都不包含任何属性和方法。实际上,使用“.”和“[]”来存取这两个值的成员或方法都会产生一个类型错误。
如果你想将它们复制给变量或者属性,或将它们作为参数传入函数,最佳的选择是null。
null是js语言的关键字,它表示一个特殊值,常用来描述“空值”。对null执行typeof运算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”。但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字、字符串、和对象是“无值”的。
js还可以用undefined来表示值的空缺。用未定义的值表示更深层次的“空值”。undefined是变量的一种取值,表明变量没有初始化,如果要查询对象属性或数组元素的值时返回undefined则说明这个属性或元素不存在。如果函数没有返回任何值,则返回undefined。引用没有提供实参的函数形参的值也只会得到undefined。undefined是预定义的全局变量,它和null不一样,它不是关键字,它的值就是“未定义”。如果使用typeof运算符得到undefined的类型,则返回“undefined”,表明这个值是这个类型的唯一成员。
相同之处:
尽管null和undefined是不同的,但它们都表示“值的空缺”,两者往往可以互换。判断相等运算符“==”认为两者是相等的,要使用严格相等运算符“===”来区分它们。在希望值是布尔类型的地方它们的值都是假值,和false类似。null和undefined都不包含任何属性和方法。实际上,使用“.”和“[]”来存取这两个值的成员或方法都会产生一个类型错误。
如果你想将它们复制给变量或者属性,或将它们作为参数传入函数,最佳的选择是null。
相关文章推荐
- Leetcode 26 Remove Duplicates from Sorted Array STL
- jstl
- 线程
- 12C ORA-错误汇总2 ORA-00910 to ORA-01497
- C语言注释转换为c++的注释
- 新智元:【arXiv】2015 深度学习年度十大论文
- [解决] User [dr.who] is not authorized to view the logs for application
- 【android】小练手app及源码
- Android Kotlin入门-类和继承
- 用户空间地址和内核空间地址说明
- 欧拉函数
- android窗体小部件
- Linux中的系统和网络资源监测工具:Monitorix
- C++学习之继承和派生
- Java学习笔记之实现Runnable接口可以资源共享(卖票系统)
- spring之IOC详解三
- 算法代码实现之选出第k小元素、中位数、最小的k个元素(线性复杂度),Golang(Go语言)实现
- TCP/IP 要点备忘
- K-means: optimization objective(最小化cost function来求相应的参数)
- 出差(八)