在AS3中,当您尝试使用Boolean()将包含“1”或“0”的String转换为布尔值时,结果在两种情况下都为真。
Boolean("1") // true
Boolean("0") // true
在第一种情况下你会如何变为真,在第二种情况下会变为假?
答案 0 :(得分:2)
您可以检查字符串是否包含“1”的确切值,如下所示:
var myBool:Boolean = (myString === "1");
或者你可以进行双重演员,如下所示:
var myBool:Boolean = Boolean(int(myString));
后者的优点是对于具有空格(“1”)或甚至“01”(在需要的情况下)的字符串为真,但仍为“0”,“0”或“00”将为假。
我在这里添加了这个Q& A,因为我偶然发现布尔(“0”)这个问题是真的。如果您有更好的解决方案,请随时发表评论。
答案 1 :(得分:1)
在第一种情况下你会如何变为真,在第二种情况下会变为假?
有多种方法可以将'1'
和'0'
分别转换为true
和false
,但更重要的是如何其他数字如何处理这些案件。
例如,如果您想将这些字符串视为数字,并将它们转换为布尔值,就好像它们是数字一样,那么您可以在转换为Number
之前强制转换为Boolean
:
var t = '1';
var f = '0';
Boolean(Number(t)); //true
!!+f; //false, terse syntax
这意味着其他非零数字(例如'-1'
)将变为true
,而转换为NaN
的非数字(例如'word'
)将变为{{} 1}}。
如果您想要检测该值是否为false
,而其他所有内容应为'1'
,那么请使用简单的相等比较:
false
如果您想要检测值是否为零,您可以使用简单的不等式比较:
t === '1'; //true
f === '1'; //false
最重要的是您的预期投入及其各自的预期产出。