以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 小测验
42. Hoisting V
输出为:
2
3
Uncaught ReferenceError: fn3 is not defined
解释:
- 在第一个立即执行的函数表达式中,如果
fn
不存在,则定义fn
函数并调用。因为函数声明比变量声明优先级高,所以定义的fn
函数会把在全局范围内定义的同名函数给覆盖掉,所以输出为2
。 - 在全局作用域中定义了函数
fn
,输出为1
。 - 在第二个立即执行的函数表达式中,如果
fn1
不存在,则定义fn1
函数并调用。但是与第一个立即执行函数的情况不同,这里的fn1
是在全局中定义的,所以不会被覆盖,输出为3
。 - 在第三个立即执行的函数表达式中,条件语句中的判断为
false
,所以内部定义的fn3
函数不会被调用。在调用fn3()
时会抛出ReferenceError
。