gpt4 book ai didi

javascript - 动态对象定义

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

这是一个严肃的问题,困扰了我一段时间。在 JavaScript 中,您可以声明一个没有类型的变量。它的类型通常是动态的,取决于分配给它的进一步值。

例如

var text;
typeof(text); //undefined

text = 'someText';
typeof(text); //string

既然我们知道 Javascript 可以动态更改变量的类型,那么为什么这些赋值是无效的呢?

例如

var someObj;
someObj.a = 'hello world';
console.log(someObj) //TypeError


var someTable;
someTable[0] = 'hello world';
console.log(someTable[0]) //TypeError

只要在变量声明中添加定义就可以解决这个问题:

var someObj = {};
var someTable = [];

我希望对这个问题有一个很好的解释。感谢您的回答。

最佳答案

变量的声明初始化有很大区别。

当你声明一个变量而不用初始化它时,它的类型将是undefined所以当你尝试调用它或访问它时,它将给出 undefined,因为根本没有为变量定义 value

这就是它应该被初始化的原因:

var someObj = {};
var someTable = [];

因此您可以根据其初始化的将其视为字符串对象数组

文档:

请看variables MDN Reference为了进一步阅读,它说:

A var statement declares variables that are scoped to the running execution context’s VariableEnvironment. Var variables are created when their containing Lexical Environment is instantiated and are initialized to undefined when created. [...] A variable defined by a VariableDeclaration with an Initializer is assigned the value of its Initializer’s AssignmentExpression when the VariableDeclaration is executed, not when the variable is created.

关于javascript - 动态对象定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48743341/

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