当前位置:  开发笔记 > 编程语言 > 正文

为什么(obj ['arr'] || obj ['arr'] = []).push(5); 给我一个"分配中无效的左手边"错误?

如何解决《为什么(obj['arr']||obj['arr']=[]).push(5);给我一个"分配中无效的左手边"错误?》经验,为你挑选了1个好方法。

我正试着写下这个幻想

"如果数组存在则推送数组;否则,初始化数组然后推送"

实现.我在Chrome控制台中写道

var obj = new Object();
( obj['arr'] || obj['arr'] = [] ).push(5);

我有理由相信这应该有效.

根据Douglas Crockford的书" JavaScript:The Good Parts",

||操作者产生其第一个操作数的值,如果所述第一操作数是truthy.否则,它产生第二个操作数的值.

如果我输入obj['arr']我的控制台,返回的值是undefined,这是假的,而不是真的.如果我输入obj['arr'] = []我的控制台,返回的值是该数组obj['arr'] = [],这是真的.因此声明

( obj['arr'] || obj['arr'] = [] ).push(5);

应该相当于

(obj['arr'] = []).push(5)

obj['arr'] = [5]按预期返回.

那么为什么我得到一个

未捕获的ReferenceError:赋值中的左侧无效(...)

我写的时Chrome中的错误( obj['arr'] || obj['arr'] = [] ).push(5);?????



1> andi..:

操作顺序......你需要parens:

( obj['arr'] || (obj['arr'] = []) ).push(5);

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有