为什么 ( obj['arr'] || obj['arr'] = [] ).push(5);给我一个“作业中的左侧无效”
Why does ( obj['arr'] || obj['arr'] = [] ).push(5); give me a "Invalid left-hand side in assignment" error?
我正在尝试写花哨
"如果阵列存在,则推动阵列;否则,初始化数组并 然后推">
实现。我在Chrome控制台中写道
var obj = new Object();
( obj['arr'] || obj['arr'] = [] ).push(5);
我有理由相信这应该有效。
根据 Douglas Crockford 的著作 JavaScript: The Good Parts,
||
运算符生成其第一个操作数的值,如果第一个 操作数是真实的。否则,它会产生第二个的值 操作数。
如果我在控制台中键入obj['arr']
,则返回的值为 undefined
,这是伪造的,而不是真实的。如果我在控制台中键入 obj['arr'] = []
,则返回的值是该数组obj['arr'] = []
,这是真实的。因此声明
( obj['arr'] || obj['arr'] = [] ).push(5);
应等效于
(obj['arr'] = []).push(5)
按预期返回obj['arr'] = [5]
。
那为什么我会得到一个
未捕获的引用错误:赋值中的左侧无效(...(
当我写( obj['arr'] || obj['arr'] = [] ).push(5);
?????时在 Chrome 中出错
操作顺序...你需要参数:
( obj['arr'] || (obj['arr'] = []) ).push(5);
相关文章:
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- Three.JS OBJ模型未显示
- ThreeJS访问加载的obj模型中的对象
- 无法在obj+mtl文件中加载纹理
- Php variable obj to js
- JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本
- 如何将Three.js场景中的几何体导出为已修改的OBJ
- 用Div内容创建obj
- 使用arr[i]循环遍历数组==未定义
- Three.js.obj阴影不起作用
- 将.obj转换为.js文件
- DashInsert Coderbyte Challenge - 为什么 arr[i]%2===1 有效
- TypeError: 使用 Jquery JSON 获取数据时无效的 'in' 操作数 obj
- 如何更改不是't〃;(obj)”;
- 作为语法的控制器没有将新的obj传递给数组
- TypeError Obj.root是未定义的ajax jquery
- Three.js透明对象和颜色更改(load.obj+.mtl)
- 灯箱:can't从iframe访问父javascript obj
- obj[arr[i]] not equal to arr[i]
- 为什么 ( obj['arr'] || obj['arr'] = [] ).push(5);给我一个“作业中的左侧无效”