JavaScript在某种条件下的奇怪行为
我刚刚解决了一些问题,但我不明白为什么我会有这种行为,这是我的js代码JavaScript在某种条件下的奇怪行为,javascript,Javascript,我刚刚解决了一些问题,但我不明白为什么我会有这种行为,这是我的js代码 function fibonacci () { let fibonacciNumber = document.getElementById("my-input").value; let numberInitialize = 0; let numberNext = 1; let sum = numberInitialize + numberNext; if (fibonacciN
function fibonacci () {
let fibonacciNumber = document.getElementById("my-input").value;
let numberInitialize = 0;
let numberNext = 1;
let sum = numberInitialize + numberNext;
if (fibonacciNumber === "" || fibonacciNumber === 0) {
return (0);
}
for (index = 1; index < fibonacciNumber; index++)
{
numberInitialize = numberNext;
numberNext = sum;
sum = numberInitialize + numberNext;
console.log(sum);
console.log("premier tour");
}
console.log(sum);
document.getElementById("fibo-result").innerHTML = `${sum}`;
}
当我写下0时,它仍在打印1,但我写的条件是这样的
if (fibonacciNumber === "" || fibonacciNumber <= 0) {
return (0);
}
if(fibonacciNumber==“”| | fibonacciNumber您需要使用,然后将输入视为整数
let fibonacciNumber = parseInt(document.getElementById("my-input").value);
原因是您的字段实际上包含字符串“0”
。标识运算符(==
)在比较值之前不会执行任何类型强制,因此“0”==0
为false
数值比较运算符类似于,因为该字段的实际值为“0”
,而不是0
。javascript在比较值时很有趣……您的输入是否与类型number/text一致?如果是“text”,您应该将其更改为fibonacciNumber=='0'@BarLevin,即使是类型number,它也会在值中返回一个字符串严格相等运算符(==)检查其两个操作数是否相等,返回布尔结果。与相等运算符不同,严格相等运算符始终认为不同类型的操作数不同。fibonacciNumber==0
为此目的执行此操作
let fibonacciNumber = parseInt(document.getElementById("my-input").value);