gpt4 book ai didi

javascript - 函数行为困惑

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

我很困惑为什么下面的代码只提醒 b2 值。b1 会发生什么?需要帮助

var B = (function(){
var name = "";
return function(n){
name = n;
this.sayHello = function(){
alert("Hi " + name);
}
}

})()

var b1 = new B("xxx");
var b2 = new B("yyy");

b1.sayHello();
b2.sayHello();

最佳答案

如果你在闭包中声明name,它将起作用。我的猜测是,如果您不在其范围内声明该变量,则闭包将始终使用 name 的外部声明版本,在您的示例中,该版本将始终为 yyy 因为那是最后设置的值。

var B = (function () {
return function (n) {
var name = n || 'David';
this.sayHello = function () {
alert("Hi " + name);
}
}

})()

DEMO

请注意,为了防止在没有任何内容传递到构造函数时创建错误,我添加了一个默认选项,在本例中为“David”。

关于javascript - 函数行为困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236341/

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