gpt4 book ai didi

javascript - 理解变量的创建

转载 作者:行者123 更新时间:2023-11-30 17:21:41 27 4
gpt4 key购买 nike

var counter = {
count: 0,
inc: function(){
this.count++;
}
}
counter.inc();
count;
//reference error: count is not defined

但是当我使用变量并调用函数时:

var counter = {
count: 0,
inc: function(){
this.count++;
}
}
var func = counter.inc;
func();
count;
// returns NaN Because func() runs window.count++

我的问题是,如果不使用变量并调用函数,为什么不创建计数变量?

+----------------------------------------------------------------+
| counter.inc() not equal to window.count++ |
| but func() equal to window.count++ |
| |
+-------Why?-----------------------------------------------------+

我的关键问题是:

Why it's different counter.inc() and var func = counter.inc;func() ?

最佳答案

当您将存储在 counter.inc 中的匿名函数存储在 func 中时,它的默认上下文变成了 window。然后,当您调用 func 时,由于您没有传入上下文,因此上下文默认为 window,它没有 count 属性。 window.count++ 导致 window.count 被设置为 NaN,因为 window.count 未定义。

window.prop = 2;
var A = {
prop: 1,
go: function () {
console.log(this.prop);
}
}
A.go(); // 1
var B = {
prop: 3,
go: A.go
}
B.go(); // 3
window.go = A.go;
window.go(); // 2

关于javascript - 理解变量的创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25051385/

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