JavaScript在某种条件下的奇怪行为

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

我刚刚解决了一些问题,但我不明白为什么我会有这种行为,这是我的js代码

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);