常见前端面试题及答案(11)


•作为对象原型链的终点。

undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
•变量被声明了,但没有赋值时,就等于undefined。
•调用函数时,应该提供的参数没有提供,该参数等于undefined。
•对象没有赋值的属性,该属性的值为undefined。
•函数没有返回值时,默认返回undefined。

该如何检测它们?

null:表示无值;undefined:表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。

==运算符将两者看作相等。如果要区分两者,要使用===或typeof运算符。

以下是不正确的用法:

var exp = undefined;
 
 if (exp == undefined) {
  alert("undefined");
 }

exp为null时,也会得到与undefined相同的结果,虽然null和undefined不一样。注意:要同时判断undefined和null时可使用本法。

typeof返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"。

以下是正确的用法:

 var exp = undefined;
 
 if(typeof(exp) == undefined) {
   alert("undefined");
 }

JS中如何判断null?

以下是不正确的用法:

 var exp = null;
 
 if(exp == null) {
   alert("is null");
 }

exp为undefined时,也会得到与null相同的结果,虽然null和undefined不一样。注意:要同时判断null和undefined时可使用本法。

 var exp=null;
 
 if(!exp) {
   alert("is null");
 }

如果exp为undefined或者数字零,也会得到与null相同的结果,虽然null和二者不一样。注意:要同时判断null、undefined和数字零时可使用本法。

 var exp = null;
 
 if(typeof(exp) == "null") {
   alert("is null");
 }

为了向下兼容,exp为null时,typeof总返回object。这种方式也不太好。

以下是正确的用法:

 var exp = null;
 
 if(!exp&&typeof(exp) != "undefined" && exp != 0) {
   alert("is null");
 }

48.什么是闭包,如何使用它,为什么要使用它?

包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。

所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1573.html