JavaScript Adding Booleans

JavaScript Adding Booleans

本文关键字:Booleans Adding JavaScript      更新时间:2023-09-26
console.log(true+true); //2
console.log(typeof(true+true)); //number
console.log(isNaN(true+true)); //false

为什么将 2 个布尔类型相加会产生一个数字?我有点理解,如果它们不等于(1/0(二进制?((,尝试在布尔类型上执行算术会很尴尬,但我找不到这个逻辑背后的原因。

它的工作原理是因为它被指定为工作。

EcmaScript 标准规定,除非任一参数是字符串,否则假定 + 运算符表示数字加法而不是字符串连接。明确提到了转换为数值:

返回将加法运算应用于 ToNumber( lprim( 和 ToNumber(rprim( 的结果。

(其中lprimrprim分别是左手和右手论证的原始形式(

EcmaScript 还明确指定了布尔值的To Number转换:

如果参数为 true,则结果为 1。如果参数为 false,则结果为 +0。

因此,true + true实际上意味着1 + 12

Javascript是松散类型的,它会自动将事物转换为其他事物以适应情况。这就是为什么您可以执行var x而无需将其定义为intbool

http://msdn.microsoft.com/en-us/library/6974wx4d(v=vs.94(.aspx

Javascript 是一种动态类型语言,因为您不必在开始时指定某些东西的类型,例如 bool xint i 。当它看到一个无法真正完成的操作时,它会将操作数转换为它们需要的任何操作,以便他们可以对它们完成该操作。这称为类型强制。你不能添加布尔值,所以Javascript会将布尔值转换为它可以添加的东西,比如字符串或数字。在这种情况下,将其转换为数字是有意义的,因为 1 通常用于表示真,0 表示假。所以Javascript会将true转换为1,并将它们加在一起