gpt4 book ai didi

javascript - 对 JavaScript 的 'this' 对象和 'var' 声明变量感到困惑

转载 作者:行者123 更新时间:2023-11-28 02:28:38 26 4
gpt4 key购买 nike

我对 JavaScript 的 this 对象有点困惑。

var contextTest = function() {
var x = 0;
}

var test = new contextTest;
console.log(test.x); // produces undefined

上面的代码和函数内部的this.x = 0;有什么区别?

我一直认为声明这样的变量会将变量绑定(bind)到作用域。

最佳答案

声明:

var x = 0;

只需在您所在的任何函数范围内创建一个局部变量。

该变量仅在该函数或函数闭包的生命周期内存在。这种类型的声明永远不会将此变量作为属性绑定(bind)到对象。为此,您必须显式为对象的属性分配一个值,如 this.x = 0;

如果您使用导致函数闭包持续存在的构造(您在代码中拥有该构造),则局部变量的值将作为私有(private)可访问变量存在于函数闭包中,只能从该特定函数访问那个特定的背景。它在某些方面的行为就像对象的私有(private)实例变量。但是,它不是对象的属性,您不能通过 this 或对该对象的任何其他引用来引用它。您只能从声明它的函数中引用它。

关于javascript - 对 JavaScript 的 'this' 对象和 'var' 声明变量感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14527241/

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