我是 javascript 的新手,我看到了这个我无法理解的问题,
这是 Chrome 的代码和检查器输出,
> test?'test':'ok'
"ok"
> [test?'test':'ok']
["ok"]
> ['ok' + test?'test':'ok']
["test"]
这个数组是怎么回事?我只想创建一个数组 ['浏览器' + 是 IE? '即':'未知']。
我可以用 [isIE? '浏览器:IE':'浏览器:未知']有效。但是我不明白上面的语法有什么问题?
最佳答案
你可以重写[isIE? '浏览器:IE':'浏览器:未知']
到:
["浏览器:"+ (isIE ? 'IE' : 'UNKNOWN') ]
我建议始终对条件运算符使用方括号。
一个常见的陷阱是:bool ? "a": "b"+ "c"
将给出 "a"
或 "bc"
,但不是预期的 "ac"
.
(bool ? "a": "b") + "c"
是预期的功能。
另一个陷阱:
'ok' + test?'test':'ok'
给出 "test"
或 "ok"
但永远不会 “oktest”
或 “okok”
。这是因为 'ok' + test
被视为 bool 值(我认为这将永远为真?)。
'ok' + (test ? 'test' : 'ok')
是预期的功能。
关于使用条件运算符声明数组元素的 Javascript 行为异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13937972/