javascript - 动态对象定义

标签 javascript variables undefined declaration

这是一个严肃的问题,困扰了我一段时间。在 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/

相关文章:

JavaScript 数字为 NaN

javascript - ion-col col-3 抛出模板解析错误

javascript - 如何使用 jQuery 获取 div.id 的innerHTML(动态更新)

javascript - AngularJS - 在方法内丢失 Controller 范围

javascript - 如何实现长滚动行为

PHP:用变量名回显常量

delphi - 将整数转换为字符串

windows - 批处理字符串操作中的进度条

PHP 错误 : Notice: Undefined index:

javascript - 调用全局变量