深入理解JavaScript系列学习笔记——执行上下文之一道关于变量提升的题

这里写图片描述

请问打印结果是?

A、666
B、undefined
C、function A(){};
D、function A(){console.log(“a”);};

答案:

这里写图片描述

解析:

函数的所有形参(如果我们是在函数执行上下文中)
— 由名称和对应值组成的一个变量对象的属性被创建;没有传递对应参数的话,那么由名称和undefined值组成的一种变量对象的属性也将被创建。
所有函数声明(FunctionDeclaration, FD)
—由名称和对应值(函数对象(function-object))组成一个变量对象的属性被创建;如果变量对象已经存在相同名称的属性,则完全替换这个属性。
所有变量声明(var, VariableDeclaration)
— 由名称和对应值(undefined)组成一个变量对象的属性被创建;如果变量名称跟已经声明的形式参数或函数相同,则变量声明不会干扰已经存在的这类属性。

关于本题的更多阐释,您还可以去”深入理解JavaScript系列——进入执行上下文一文中查看

猜你喜欢

转载自blog.csdn.net/yangyuqingabc/article/details/80767198