为什么Javascript给出的结果是数字而不是真/假的表达式
Why is Javascript giving result as Number instead of True/False for expression?
今天,当我在应用程序中闲逛时,我观察到了一些奇怪的东西。
var someVar = 25;
var anotherVar = 50;
var out = (anotherVar == 50 && someVar);
console.log(out) // outputs 25 and not true or false;
知道发生了什么吗?
如 MDN 的逻辑运算符页面所述,&&
运算符:
如果可以转换为 false,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时,如果两个操作数都为 true,则
&&
返回 true;否则,返回 false。
在您的情况下,expr1 ( anotherVar == 50
( 为真(不假(,因此它返回 expr2 ( someVar
(,即 25
。
它不返回true
或false
,因为 expr2 不是布尔值。
ECMA-262 规范指出:
&&
或||
运算符生成的值不一定是布尔类型。生成的值将始终是两个操作数表达式之一的值。
相关文章:
- 正则表达式与数字中的第二个点匹配
- 正好包含2个大写字母和3个数字的正则表达式
- 键按下上的正则表达式 仅限制数字
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 正则表达式(JavaScript),用于创建数字必须大于x的数据验证
- 用于删除紧跟在非数字后面的零的正则表达式
- XXXXXX的正则表达式.XX格式的数字
- javascript正则表达式,用于匹配带数字和不带数字的字符串
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- JavaScript正则表达式(带_-的字母数字字符)
- 用于数字输入的正则表达式
- 用Javascript正则表达式过滤十六进制数字
- 我应该使用什么正则表达式来验证数字模式
- 用于获取两个方括号之间的数字的正则表达式
- 正则表达式删除最后一个数字之后的字符串
- Javascript 正则表达式在特定单词或数字之后拆分
- 正则表达式 jquery 将数字替换为链接
- 正则表达式允许字母数字和空格,但不允许连续两个空格
- 正则表达式,字符串末尾必须包含数字