在javascript中,空字符串作为布尔值是否总是false?

在javascript中,空字符串作为布尔值是否总是false?,javascript,string,boolean,Javascript,String,Boolean,在javascript中 var a = ''; var b = (a) ? true : false; var b将设置为false 这是一个可以依赖的定义行为吗?是。所有false、0、空字符串'和'、NaN、未定义的和null始终计算为false;其他一切都是正确的 在您的示例中,b在计算后为false。(我认为您错误地编写了true)var b将被设置为true。这是因为在JavaScript中,空字符串与其他一些值一样被视为“false”值 请查看falsy值是否为是。Javascr

在javascript中

var a = '';
var b = (a) ? true : false;

var b
将设置为
false


这是一个可以依赖的定义行为吗?

是。所有
false
0
、空字符串
'
'
NaN
未定义的
null
始终计算为
false
;其他一切都是
正确的


在您的示例中,b在计算后为
false
。(我认为您错误地编写了
true

var b
将被设置为
true
。这是因为在JavaScript中,空字符串与其他一些值一样被视为“false”值


请查看falsy值是否为是。Javascript是ECMAScript的一种方言,ECMAScript语言规范明确定义了这种行为:

ToBoolean

如果参数为空字符串(其长度为零),则结果为false; 否则,结果是正确的

引自

可以转换为false的表达式示例包括 计算为null、0、空字符串(“”)或未定义。 (见附件)

var a='';
变量b=(a)?假:真;//固定的!

console.log(b);//=>真的
你确定吗,我在这里得到了
假的
:我更进一步了。带空格的字符串为true。如果('''{console.log('!')}但'==0为真。我认为@JonH edition是错误的,空字符串
'
在布尔上下文中计算为false,因此如果
a='然后
a?false:true
=>
''?false:true
=>
false?false:true
=>
true
(因为是对false值的评估)。我认为应该是
varb=(a)?真:假下一个语句是否正确。@PhoneIX已编辑,希望现在更有意义。@SwissCoder不是因为不可读,而是因为它输出了另一个答案。”。现在我已经更正了。
null
不是
false
,也不是
true
null
null
@布鲁诺,你可以用
NaN
undefined
执行相同的测试。它们不是虚假的,而是虚假的。这就是被问到的。aaaa而且已经解决了一个警告是,
新字符串(“”
是真实的!这是因为它是一个对象,而缩写形式
表示原语值版本。这同样适用于
新数字(0)
甚至
新布尔值(false)
。不在代码中使用对象版本是一个很好的理由,这确实意味着
if(str.length)
可以处理这种边缘情况,而
if(str)
则不会。起初我认为,“太过分了,这已经得到了很好的回答。”但这是一个很好的介绍和信息。谢谢。你的回答错了<代码>变量b
实际上将被设置为
true
,因为如果你看代码,它与
变量a
相反。@bombek谢谢-我会更新。看起来原始问题是在我的答案(值被交换)之后编辑的。问题中的编辑太多了,还是相反。