【发布时间】:2012-01-31 08:30:16
【问题描述】:
在 JavaScript 中,
var a = '';
var b = (a) ? true : false;
var b 将设置为 false。
这是可以依赖的已定义行为吗?
【问题讨论】:
-
你确定吗,我在这里收到
false:jsfiddle.net/8CKbd -
我更进一步。带空格的字符串为真。 if (' ') {console.log('!')} 但 ' ' == 0 为真。
-
我认为@JonH 版本是错误的,空字符串
''在布尔上下文中被评估为false 所以如果a = '';然后a ? false : true=>'' ? false : true=>false ? false : true=>true(因为是对错误值的评估)。我认为下一条语句应该是var b = (a) ? true : false;。 -
@PhoneixS 已编辑,希望现在更有意义。
-
@SwissCoder 不是不可读,而是输出另一个答案。现在我已经更正了。
标签: javascript string boolean