在javascript中是否将空字符串视为假字符串?

在javascript中是否将空字符串视为假字符串?,javascript,Javascript,我注意到,如果您有如下声明: var test = "" || null var test = "test" || null test将计算为null,但如果我们执行以下操作: var test = "" || null var test = "test" || null test将计算为“test”,这对于任何对象代替字符串都适用,因此javascript是否将空字符串视为假值或空值,如果是,原因是什么?空字符串不是仍然是一个对象吗,那么它不应该被同样地处理吗 我已经在FireFox、

我注意到,如果您有如下声明:

var test = "" || null
var test = "test" || null
test
将计算为
null
,但如果我们执行以下操作:

var test = "" || null
var test = "test" || null
test
将计算为“test”,这对于任何对象代替字符串都适用,因此javascript是否将空字符串视为假值或空值,如果是,原因是什么?空字符串不是仍然是一个对象吗,那么它不应该被同样地处理吗


我已经在FireFox、Chrome、IE7/8/9和Node中对此进行了测试。

字符串不是一个对象,它是一个与数字或布尔值类似的原语


空字符串NaN、+0、-0、false、undefined和null是在直接布尔转换中计算为false的唯一值。

字符串不是对象,它是一个与数字或布尔值类似的基元

空字符串NaN、+0、-0、false、undefined和null是在直接布尔转换中计算为false的唯一值

javascript是否将空字符串视为假值或空值,如果是,原因是什么

是的,是的,因为

空字符串不是一个对象吗

否。基本字符串值不是对象,只有
新字符串(“”
将是(并且将是真实的)

javascript是否将空字符串视为假值或空值,如果是,原因是什么

是的,是的,因为

空字符串不是一个对象吗


不。基本字符串值不是对象,只有
新字符串(“”
将是(并且将是真实的)

字符串在JS中不是对象。其他“falsy”值包括:
0
NaN
null
未定义
,字符串在JS中不是对象。其他“假”值包括:
0
NaN
null
未定义的

检查某个属性时,必须注意假值的一个危险问题

假设要测试新属性的可用性;当此属性的实际值为0或“”时,不能简单地使用

 if (!someObject.someProperty)
    /* incorrectly assume that someProperty is unavailable */
In this case, you must check for it being really present or not:

if (typeof someObject.someProperty == "undefined")
    /* now it's really not available */

检查某个属性是否存在时,必须注意虚假值的一个危险问题

假设要测试新属性的可用性;当此属性的实际值为0或“”时,不能简单地使用

 if (!someObject.someProperty)
    /* incorrectly assume that someProperty is unavailable */
In this case, you must check for it being really present or not:

if (typeof someObject.someProperty == "undefined")
    /* now it's really not available */

是空字符串是错误的,但是
新字符串(“”
不是错误的

还要注意的是,很可能

if (x) { ... }
已经核实了,但是

if (x == false) { ... }

也进行了验证(例如,使用空数组
[]
新字符串(“”
)。

是空字符串无效,但
新字符串(“”
)无效

还要注意的是,很可能

if (x) { ... }
已经核实了,但是

if (x == false) { ... }

也进行了验证(例如,使用空数组
[]
新字符串(“”
)。

Ah现在更有意义了,谢谢!对我来说,让空字符串falsy看起来仍然是一个奇怪的决定,但我想我必须习惯于把字符串看作一种原始类型,而不是对象。啊,现在更有意义了,谢谢!对我来说,让空字符串falsy似乎仍然是一个奇怪的决定,但我想我必须习惯于将字符串视为一种基本类型,而不是对象。