使用条件运算符声明数组元素的 Javascript 行为异常?

标签 javascript arrays syntax

我是 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/

相关文章:

c++ - "expected unqualified-id before ‘.’ token”错误--C++

c++ - 在 C++ 模板中使用尖括号会带来哪些语法问题?

javascript - 为什么我的 JSON 更新了一个 API 而不是另一个 API?

javascript - Google Maps API V3 和 Javascript 结果和标记

python - 如何让数组中的所有值都落入一个范围内?

javascript - 推送到数组并创建运行总计

javascript - (Spotify Web API) 创建新播放列表 - POST 请求返回 'Error 403 (Forbidden)'

javascript - 从上一页获取数据并传输到第二页 PHP/MySQL

javascript - 未捕获的 TypeError : p. appendChild 不是函数

c++ - 标识符 "customerMenu"未定义