gpt4 book ai didi

javascript - 函数作用域在 JavaScript 中是如何工作的?

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

我在理解 JavaScript 中的函数作用域时遇到一些问题:

function Person() {
var _firstName;
var _lastName;
}
personOne = new Person();
personOne._firstName = "Fred";
alert(personOne._firstName);

这会输出“Fred”,但我认为 Person 函数的变量只能在函数内部访问。为什么有效?

最佳答案

在 JavaScript 中,对象是动态可扩展的。

例如:

var obj = {};
obj.firstName = "Matías"; // <-- This adds the property even if it doesn't exist

另一方面,如果你想在构造函数中声明应该是对象的一部分的属性,你需要用 this 来限定它们:

function Person() {
this._firstName = null;
this._lastName = null;
}

额外信息

如果你想避免对象被动态扩展,你可以使用 ECMA-Script 5 Object.preventExtensions 函数:

var obj = {};
Object.preventExtensions(obj);

// This property won't be added!
obj.text = "hello world";

关于javascript - 函数作用域在 JavaScript 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570635/

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