我使用以下基本Javascript来反转使用
时工作的数字
while (!no == 0)
但是当我使用
时,它不起作用
while (!no === 0)
我在parseInt(0)
的控制台中尝试过只返回number
而我的no
已经number
所以
为什么
===
无效,有人可以帮助并更好地解释我吗?
function findRepeated(number) {
var a, no, b, temp = 0;
no = parseInt(number);
while (!no == 0) {
a = no % 10;
no = parseInt(no / 10);
temp = temp * 10 + a;
}
return temp;
}
console.log(findRepeated(123));

答案 0 :(得分:8)
!no == 0
与!(no == 0)
不同。它是(!n) == 0
。
类似,!no === 0
是(!no) === 0
此值始终为false
,因为!no
为boolean,0
为数字。
不同类型的值永远不会是===
。
了解logical NOT operator,comparison operators和operator precedence。
答案 1 :(得分:4)
!no
返回一个布尔值,它返回false,虽然no的值是一个数字,在任何数字前添加negate运算符将返回false,即console.log(!123 === false)
。您可能已经注意到,使用==
会为您转换数据类型,而使用===
则不会。
我喜欢null和undefined的例子。
虽然null == undefined
为真,但null === undefined
为假,因为值null是一种对象,而undefined的类型当然是未定义的。
console.log("test1: " + !123); // false
console.log("test2: " + (!123 === false)); // true
console.log("test3: " + (!123 == 0)); // true
console.log("test4: " + (!123 === 0)); // false
console.log("test5: " + (0 == false)); // true
console.log("test6: " + (0 === false)); // false
console.log("test7: " + (null == undefined)); // true
console.log("test8: " + (null === undefined)); // false
console.log("test9: " + typeof null); // object
console.log("test10: " + typeof undefined); // undefined