以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 小测验
28. Hoisting II
输出:
1
2
TypeError: func3 is not a function
解释:
func1()
输出1
,因为func1
是一个箭头函数,它会在定义时绑定this
,并且没有创建自己的arguments
对象。它也是函数表达式,因此只有在定义后才能调用。在这个特定的例子中,它被定义,并立即被调用了。func2()
输出2
,因为func2
是一个函数声明,函数声明具有函数提升的特性,可以在声明之前访问。因此,在调用func2()
之前定义func2()
会在代码运行时提升到文件/函数的顶部。func3()
抛出TypeError
,因为func3
是一个变量声明,但它还没有被赋值。这意味着在使用它之前,它的值为undefined
,它不是函数,因此不能被调用。var func3 = function func4() {console.log(3)}
声明了一个名为func3
的变量,将其赋值为一个具名函数表达式func4
。但是,在该行代码执行之前,func3
的值为undefined
,因此之前尝试调用func3()
时出现了TypeError
。如果将var func3
移动到func4
的声明之后,则func3()
也将输出3
。