javascript - 在javascript中分配不存在的变量

标签 javascript properties variable-assignment

我发现了一行 JavaScript 代码,但我不太清楚它是如何工作的。假设 window 对象之前没有设置任何 app 属性:

var app = window.app || {};

问题是 - 为什么 JS 不会为 window 对象不存在的 app 属性抛出任何 ReferenceError ,而是创建 window.app{} - 为什么?如果我执行以下行:

var a = b || {}

我收到ReferenceError: b is not Defined,我对此表示同意。此外,我确实理解 xxx || {} 表达式 - 如果第一个元素不为假,则返回第一个元素,否则返回第二个元素。例如,使用空白对象初始化未定义的内容很有用(例如 JS 中的默认函数参数)。

最佳答案

只有在尝试使用未声明的变量时才会出现引用错误,而不会出现未定义的属性。

|| 如果左侧为真值,则返回左侧,否则返回右侧。

window.app 未定义,因此它是一个假值。因此,它返回右侧:{}

然后将 or 语句的计算结果分配给 app

如果 app 是全局变量(即未在函数内声明),则 window 对象的属性 app 将被创建。这不是在测试中使用 window.app 的结果。这就是全局变量的工作原理。

关于javascript - 在javascript中分配不存在的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019847/

相关文章:

javascript - 康瓦 : get corners coordinate of a rotated rectangle

c++ - 无法在 C++ 中为全局数组赋值

variables - 未找到 SGE 命令, undefined variable

c# - 多重赋值(字段=属性=值)

javascript - 如何通过标题值移动​​表中的列

javascript - 如何使用 JavaScript 输出数组中出现的次数

脚本运行时 JavaScript 页面更新

php - Yii2 ActiveFormencodeErrorSummary 属性...它的用途是什么?

powershell - 如何在对象中搜索值?

javascript - JavaScript "writable"属性描述符是如何工作的?