1
11
这项技术试图利用 short circuit evaluation …但在JavaScript中,这是很棘手的,如果您试图利用它进行对象实例化,结果会非常危险。
短路评估背后的理论是,OR语句只能在第一个语句之前进行评估
但是,JavaScript的特性,特别是如何处理未声明的变量,使得它成为一种必须非常小心地用来实例化对象的技术。 以下代码创建一个空对象,除非obj以前在同一范围中声明:
这是因为之后
以下代码仅在以下情况下创建空对象
如果在以下情况下使用上述行:
例如,此javascript根本不会进行评估:
但这个javascript总是
所以在javascript中使用这种短路评估是危险的,因为您通常只能在表单中使用它
会失败的 正是你最想让它工作的时候 …如果obj未声明。 注: 我在倒数第二个例子的注释中提到了这一点,但是理解变量在JavaScript中无法定义的两个原因是很重要的。
变量可以使用
尝试使用未声明的未定义变量会导致
运行时错误
. 使用已声明的未定义变量是完全合法的。这就是为什么使用
|
2
3
这种机制有点不寻常:与大多数语言不同,JavaScript的
更多内容 this blog post .
AS
Darin said
你的
…意思是,“如果来电者没有给我一些真实的东西
|
3
2
我认为
在哪里?
对于数组也是这样:如果它为空,则将其分配给空数组。 |
4
0
理解这种语法的关键是,javascript中布尔或(或和)表达式的结果是最后一个计算的组件。正如其他评论者所指出的,JavaScript的短路正与此功能一起使用,以有条件地设置
这意味着obj被设置为表达式的值
|
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |