前端面试题
1.简述null和undefined的区别。
undefined:是一个表示’无’的原始值,转为数值时为NaN.是所有没有赋值变量的默认值,自动赋值
null:表示一个‘无’的对象,转为数值时为0.主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址
Number(undefined) //NaN 5+Number(null) //5
null表示“没有对象”,即该处不应该有值。
- 作为函数的参数,表示该函数的参数不是对象。
- 作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype) // nullundefined:表示缺少值,就是此处应该有一个值,但是还没有定义。
- 变量声明了,但没有赋值时,就等于undefined。
- 调用函数时,应该提供的参数没有提供,该参数等于undefined.
- 对象没有赋值的属性,该属性的值为undefined。
- 函数没有返回值,默认返回undefined。
var i; i // undefined function f(x){console.log(x)} f() // undefined var o = new Object(); o.p // undefined var x = f(); x // undefined
补充:null作为一个对象,存储在栈内存的原因:因为null变量已知大小并且有范围上限。