gpt4 book ai didi

javascript - 什么情况下可以使用函数表达式代替函数声明?

转载 作者:行者123 更新时间:2023-11-27 23:42:47 24 4
gpt4 key购买 nike

我更喜欢一直使用函数声明,因为我可以将函数放置在源文件的任何位置。如果我使用函数表达式,则该函数必须放置在源文件的顶部。

是否有使用函数表达式代替函数声明的好情况?

//Function declaration
function foo() { return 5; }

//Anonymous function expression
var foo = function() { return 5; }

最佳答案

所有变量声明都被提升到作用域的顶部,所有函数定义也都被提升到作用域的顶部。因此

console(foo()); // prints foo
function foo(){return 'foo'};

但是

console(foo()); // complain foo is not function, it is undefined
var foo = function(){return 'foo'};

第二个示例与此相同:

var foo;
console.log(foo());
foo = function(){}

使用第二个表达式的原因源于您的编程逻辑。例如:

var foo = MY_ENV_VAR ? function(){return true} : function(){return false}

或运行以下示例以更好地理解:

var bar;                                                                                                                                                                                                

if (true) {
function foo(){return 'foo'};
bar = function(){return 'hey'};
} else {
function foo(){return 'another'};
bar = function(){return 'bar'};
}
console.log(foo());
console.log(bar());

第一个日志将是另一个日志,因为 JS 编译器将函数声明放在作用域的顶部,而第二个声明只是覆盖第一个声明。而第二条日志则输出 if 语句中指定的函数的结果,即 hey

关于javascript - 什么情况下可以使用函数表达式代替函数声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33517347/

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