JavaScript 最常见的面试题

一、undefined和not defined在JavaScript中有什么区别?

首先从字面意思来理解。

not defined::未定义,没有定义,无法定义;

undefined::不明确的

单从字面意思大体也能看出两者的区别:前者是没有定义,也就是说没有;后者是不明确的,也就是说不知道有没有定义

1、not defined

一个未定义的变量是没有声明的变量,这样的变量在使用时会直接报错误。

2、undefined

一个定义了但未赋值的变量

一个定义了但把值赋为undefined的变量

一个对象没有赋值的属性

一个没有返回值的函数

值得注意的是:not defined和undefined的typeof()的值都为"undefined",所以无法用typeof()来判断这两者。

二、什么是JavaScript中的“闭包”?举个例子。

闭包就是指能够读取其他函数内部变量的函数,简单的理解成“定义在一个函数内部的函数”,在本质上,闭包就是函数内部和函数外部连接起来的一座桥梁。

一个简单的闭包例子。

以上,为什么结果不是0,1,2呢?–因为i作为一个闭包变量,当前值为3,被内部函数使用。要实现想要的效果,可以在遍历的时候每一次遍历创建一个独立的上下文使其不受闭包影响。而自触发函数可以实现独立上下文。

以上的两个例子体现闭包的2个方面:一个是内部函数使用闭包变量,另一个是把内部函数写在自触发函数中从而避免受闭包影响。

你可能感兴趣的:(面试题)