gpt4 book ai didi

javascript - 为什么这个对象不在范围内?

转载 作者:行者123 更新时间:2023-11-28 15:27:42 25 4
gpt4 key购买 nike

请参阅下面的代码示例:

( function(){
var test = new p5(
function ( p ){
var x = new Quad(); // Quad is undefined
}
),

Quad = function(){
// some code
}
})();

我怀疑它与外部库(本例中的p5)有关,因为匿名函数是在new p5()的上下文中执行的,但我没看懂。

我认为因为 Quad 是在主闭包的范围内定义的,所以它应该可用于该闭包内定义的任何内容......

你能解释一下为什么我的想法是错误的吗?

最佳答案

在调用 p5()之后之前,您不会为 Quad 赋值。据推测,它会尝试立即使用它,此时未定义(尽管已声明,因为 var 的效果已应用)。

调换语句两部分的顺序。

( function(){
var Quad = function(){
// some code
}, test = new p5(
function ( p ){
var x = new Quad(); // Quad is undefined
}
)
})();

或者使用函数声明(将被提升)。

( function(){
var test = new p5(
function ( p ){
var x = new Quad(); // Quad is undefined
}
);
// Note semi-colon above. You aren't creating multiple variables with `var` in a single statement any more.
function Quad (){
// some code
}
})();

关于javascript - 为什么这个对象不在范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28509869/

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