使用 OR 设置 javascript 变量是否类似于 if?

问题描述 投票:0回答:0

我正在研究递归,我遇到了一个使用斐波那契数列的例子,它谈到了记忆的概念。其中,它有一个用 OR (||) 声明的变量。我对此有点困惑。

代码如下:

fib = (number, storage) => {
    storage = storage || {}; //<--This is what I'm asking about

    if (storage[number]){
        return storage[number];
    } 
    if (number <= 1){ //<--second question 
        return 1;
    } 
    return storage[number] = fib(number -1, storage) + fib(number-2, storage);
}

我的理解是否正确,当第一次调用它时,它会将一个空对象分配给存储,因为存储不是第一次传递,而且还不存在?然后在后续调用中,由于存储是某种东西(一个对象),它只使用第一个选项并分配存储并忽略 OR?
另外,单独的问题,但是由于这个函数没有明确地停在 0,为什么它实际上停在 0?为什么它不无限期地继续为负数?

javascript variables recursion variable-assignment
© www.soinside.com 2019 - 2024. All rights reserved.