在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似乎仍然是一个奇怪的决定,但我想我必须习惯于将字符串视为一种基本类型,而不是对象。