在javascript中,空字符串作为布尔值是否总是false?
在javascript中在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
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谢谢-我会更新。看起来原始问题是在我的答案(值被交换)之后编辑的。问题中的编辑太多了,还是相反。