javascript面试题之null和undefined的区别
2015-09-15 12:46
821 查看
javascript中有两个值表示“空”,null和undefined。
在一些情况下,null和undefined几乎是一样的。例如:
但是null和undefined仍然存在一些区别:
1.类型不一样
null居然是一个object!所以,我们可以这么理解,null是一个对象的占位符,表示这个对象还未初始化,是个”空对象”;而undefined表示压根没人对这个变量做定义,没人知道这到底是个什么玩意儿。
2.转为数值时,值不一样
undefined转为数值NaN,null转为数值0。
3.===运算符可区分null和undefined
4.null的典型用法
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
5.undefined的典型用法
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
在一些情况下,null和undefined几乎是一样的。例如:
if (!undefined) {// undefined is false console.log('undefined is false'); } if (!null) {// null is false console.log('null is false'); } //注意 if(undefined == null) {// true console.log('undefined == null'); }
但是null和undefined仍然存在一些区别:
1.类型不一样
console.log(typeof undefined); //undefined console.log(typeof null); //object
null居然是一个object!所以,我们可以这么理解,null是一个对象的占位符,表示这个对象还未初始化,是个”空对象”;而undefined表示压根没人对这个变量做定义,没人知道这到底是个什么玩意儿。
2.转为数值时,值不一样
console.log(Number(undefined)); //NaN console.log(undefined + 10);//NaN console.log(Number(null)); //0 console.log(null + 10); //10
undefined转为数值NaN,null转为数值0。
3.===运算符可区分null和undefined
if(null === undefined) {//false console.log("null === undefined")//never }
4.null的典型用法
(1) 作为函数的参数,表示该函数的参数不是对象。
function testObj(obj) { if(null == obj) { // 异常处理,比如创造一个新对象 } //…… }
(2) 作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype) // null
5.undefined的典型用法
(1)变量被声明了,但没有赋值时,就等于undefined。
var i; i // undefined
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
function f(x) { console.log(x) } f() // undefined
(3)对象没有赋值的属性,该属性的值为undefined。
var o = new Object(); o.p // undefined
(4)函数没有返回值时,默认返回undefined。
var x = f(); x // undefined
相关文章推荐
- 一个关于if else容易迷惑的问题
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象