gpt4 book ai didi

javascript - 函数提升中的奇怪行为

转载 作者:行者123 更新时间:2023-12-03 00:59:57 25 4
gpt4 key购买 nike

我编写了下面的脚本并在便签本中执行。

baz();

var baz = function(){
console.log("Hello World");
}

当我尝试执行上面的脚本时,出现了以下异常。我知道,这个表达式的出现是因为,提升对于函数表达式无效。

/*
Exception: TypeError: baz is not a function
@Scratchpad/1:1:1
*/

现在,我将函数名称“baz”替换为“say_hello”,并重新运行应用程序,它工作正常,没有任何异常。这种行为有什么原因吗?

say_hello();

var say_hello = function(){
console.log("Hello World");
}

最佳答案

say_hello();

function say_hello(){
console.log("Hello World");
}

这确实工作正常,没有任何异常

原因是:

JavaScript only hoists declarations (variable and function declarations), not initializations

如果变量在使用后声明并初始化,则该变量的值将是未定义的。例如:

console.log(num); // Returns undefined 
var num;
num = 6;

如果你在使用变量后声明它,但事先初始化它,它将返回值:

num = 6;
console.log(num); // returns 6
var num;

了解更多信息:Only Declarations Are Hoisted

关于javascript - 函数提升中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52675170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com