gpt4 book ai didi

javascript - 所有函数表达式突然不被识别为函数

转载 作者:行者123 更新时间:2023-11-30 18:18:53 25 4
gpt4 key购买 nike

我有一个包含许多函数表达式的大量 javascript 文件。突然控制台给我以下错误:

在浏览器中

The value of the property 'myFunc' is null or undefined, not a Function object

在火狐中

TypeError: myFunc is not a function

我是这样调用函数的:

myFunc();

这是函数:

myFunc = function() {
//do stuff
}

这发生在所有函数表达式上。如果我将一个更改为函数声明,它会起作用,但随后会在其中调用其他一些函数表达式时失败。什么鬼?

最佳答案

可能性1

如果在定义之前调用函数表达式,则会出现此错误。但是,如果您将它变成一个函数声明,函数声明将被提升到作用域的顶部,并且可以在实际声明发生之前或之后被调用。所以:

functionFoo();
var functionFoo = function() {

};

会给出这个错误,因为你试图在函数定义之前调用它。但是:

functionFoo();
function functionFoo() {

}

会起作用,因为实际的函数声明被提升到作用域的顶部,并且可以在任何地方使用。

可能性2

如果您从函数表达式定义之外的不同范围调用函数表达式,您将收到此错误。函数表达式和其他变量一样,只能在它们定义的范围内使用。所以:

$( document ).ready( function() {
var functionFoo = function() {

};
} );
functionFoo();

会给你一个错误,因为函数的定义发生在与调用不同的范围内。但是:

$( document ).ready( function() {
var functionFoo = function() {

};
functionFoo();
} );

会很好地工作,因为定义和调用都发生在同一范围内。

关于javascript - 所有函数表达式突然不被识别为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586558/

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