gpt4 book ai didi

javascript - 将函数分配给变量与否之间的区别

转载 作者:IT王子 更新时间:2023-10-29 03:19:03 24 4
gpt4 key购买 nike

我参与过几个不同的项目,我见过两种不同的创建 jQuery/JavaScript 函数的方法。

第一个:

function testFunction(){

};

第二个:

var testFunction = function (){

};

这两者有区别吗?

最佳答案

主要区别在于第一个(函数声明)被提升到声明它的范围的顶部,而第二个(函数表达式)则没有。 p>

这就是您能够调用已在调用后声明的函数的原因:

testFunction();
function testFunction() {}

你不能用函数表达式来做到这一点,因为赋值是就地发生的:

testFunction();
var testFunction = function() {}; //TypeError

还有第三种形式(命名函数表达式):

var testFunction = function myFunc() {};

在这种情况下,标识符 myFunc 仅在函数内部的范围内,而 testFunction 在它声明的任何范围内都可用。 但是(在 Internet Explorer 中总是有一个但是)在版本 9 以下的 IE 中,myFunc 标识符错误地泄漏到包含范围。当您需要引用调用函数时,命名函数表达式很有用(因为 arguments.callee 已弃用)。


另请注意,变量声明也是如此:

console.log(x); //undefined (not TypeError)
var x = 10;

你可以想象 JavaScript 引擎是这样解释代码的:

var x; //Declaration is hoisted to top of scope, value is `undefined`
console.log(x);
x = 10; //Assignment happens where you expect it to

关于javascript - 将函数分配给变量与否之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146814/

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