JavaScript Adding Booleans
JavaScript Adding Booleans
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( 的结果。
(其中lprim
和rprim
分别是左手和右手论证的原始形式(
EcmaScript 还明确指定了布尔值的To Number
转换:
如果参数为 true,则结果为 1。如果参数为 false,则结果为 +0。
因此,true + true
实际上意味着1 + 1
或2
。
Javascript是松散类型的,它会自动将事物转换为其他事物以适应情况。这就是为什么您可以执行var x
而无需将其定义为int
或bool
http://msdn.microsoft.com/en-us/library/6974wx4d(v=vs.94(.aspx
Javascript 是一种动态类型语言,因为您不必在开始时指定某些东西的类型,例如 bool x
或 int i
。当它看到一个无法真正完成的操作时,它会将操作数转换为它们需要的任何操作,以便他们可以对它们完成该操作。这称为类型强制。你不能添加布尔值,所以Javascript会将布尔值转换为它可以添加的东西,比如字符串或数字。在这种情况下,将其转换为数字是有意义的,因为 1 通常用于表示真,0 表示假。所以Javascript会将true
转换为1
,并将它们加在一起
- JavaScript Adding Booleans
- Adding to Number.MAX_VALUE
- Javascript adding js
- .Net MVC 3 Adding Javascript
- Node.js & Socket.io Adding Username
- Javascript Regex adding an attribute within <img> and
- Twig - JavaScript booleans
- Adding JavaScript JQuery to HTA
- Javascript adding Vectors 2D Graphics
- Grunt bower_concat not adding css
- Adding in Javascript (NodeJS)
- Tablesorter ajaxProcessing adding tr
- Adding a constructor to a property of a 'parent' obj
- Adding variable whitespace between text in a <li> tag
- Adding in javaScript
- Adding an iframe by JAVASCRIPT
- adding leading zero if number is < 10
- Adding close.window
- Adding toastr javascript asp.net webform
- Adding a target="_blank" with execCommand 'cre