逻辑运算符混淆
Logical operators confusion
本文关键字:逻辑运算符 更新时间:2023-09-26
var first = prompt("Enter the first number");
var second = prompt("Enter the second numbers");
var number1 = parseInt(first);
var number2 = parseInt(second);
if(isNaN(number1 || number2)){
document.write("invalid, not a number");
};
为什么运算符或 (||( 在上面的例子中不起作用?它适用于 and (&&( 运算符,但我无法理解背后的逻辑。我不是基本上告诉计算机,如果数字 1 或数字 2 不是数字,请打印这个吗?
演示在这里
https://jsfiddle.net/tc3mhL1u/
分别对变量first
和second
使用 isNaN()
:
var
first = +prompt("Enter the first number"),
second = +prompt("Enter the second numbers");
if(isNaN(first) || isNaN(second)){
alert("invalid, not a number");
}
else {
alert('Yay!');
}
阅读更多关于isNaN的信息
在您的示例中,您使用表达式 number1 || number2
.它看起来像这个例子:
var result = 1 || 0; // 1
var result = 0 || 44; // 44
因此,您的单个isNaN将仅检查您的输入参数之一:
isNaN(1 || 0) -> isNaN(1) -> false
isNaN(0 || 44) -> isNaN(44) -> false
面向对象的JavaScript - 第二版:如果JavaScript遇到非布尔表达式作为操作数 逻辑运算,结果返回非布尔值。这 行为不是你应该依赖的东西,因为它使代码 更难理解。
你看,如果你在isNaN((函数中使用||,or被认为是不同的。函数结果为 false,因为您的两个变量中的一个是一个数字:
isNaN(true || false( = false
如果你这样做:
if(isNaN(number1) || isNaN(number2)){
document.write("invalid, not a number");}
然后你在isNaN中分别考虑每个var,所以如果其中一个结果是真的,另一个是假的,if((考虑:
if(true || false( = true
相关文章:
- Javascript逻辑运算符和字符串/数字
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 用于验证JS中逻辑运算符表达式的正则表达式
- 为什么在javascript函数声明中使用逻辑运算符
- 为什么这个while循环不能使用AND逻辑运算符
- 逻辑运算符混淆
- IF ELSEIF语句中的Java脚本逻辑运算符
- 为什么JavaScript中的逻辑运算符是关联的
- 布尔表达式-与AND、OR逻辑运算符混淆以及它们的工作方式
- Javascript 逻辑运算符:多个 ||语法困境
- 我可以在文档中放入逻辑运算符吗.querySelectorAll?如果是,如何
- 如何使用逻辑运算符 JavaScript 或 jQuery
- angularJS-使用逻辑运算符内联的多个过滤器
- 具有逻辑运算符的复杂三元运算符
- Javascript逻辑运算符||将0读取为假值.有什么好办法解决这个问题吗
- 闭包模板中的逻辑运算符
- Javascript 逻辑运算符
- JS逻辑运算符
- 了解递归函数与 Javascript 中的逻辑运算符相结合
- 为什么ecmascript5说&&如果任一操作数未定义,逻辑运算符将引发ReferenceError异常