javascript - 正确使用||

标签 javascript

我想的一般问题是:|| 什么时候开始?返回左边的项目,什么时候返回右边的项目?

具体问题是为什么这不起作用:

var fibonacci = (function () {

    var cache = [0, 1];

    function fibonacci(number) {
        return cache[number] = cache[number] || (fibnonacci(number - 1) + fibonacci(number - 2));
    }

    return fibonacci;
})();

var $div = $('div');

for (var index = 0; index < 10; index++) {
    $('<span />').text(fibonacci(index))
        .appendTo($div);
}

最佳答案

当且仅当它为真时,它返回左边的项目。

以下内容不真实:

  • 原始 bool 值false
  • 原始字符串值"" (空字符串)
  • 数字 +0、-0 和 NaN
  • 原始值null
  • 原始值undefined

其他都是真实的。

Here is the list on the language specification .

在你的情况下 cache[0]返回 0 ,我们可以看到它是假的,所以它进入递归。这就是我们避免 || 的原因在这些情况下短路。

您应该考虑直接检查对象是否具有该属性:number in cache是这样一种方式,另一种是cache[number] !== undefined .

关于javascript - 正确使用||,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036171/

相关文章:

javascript - 为什么 safari 不能使用 css。甚至显示 css 类名?

javascript - Angular : Resetting Factory or Service

javascript - 使内联 CSS 比外部 CSS 更强大!重要吗?

javascript - 在 HighChart 的最新数据上显示 Marker 符号

javascript - 使用 jQuery .attr 替换 href 链接

javascript - Laravel ajax post,没有得到响应,错误或数据库插入

php - 我正在尝试使用当前类制作 CSS 和 Javascript 菜单

javascript - 在intellij中使用requirejs时JsTestDriver断言

javascript - 我如何将这个 toggleClass 函数创建为 AngularJS 指令?

javascript - 为什么脚本在同一脚本中对 'element.checked' 进行评估时会有所不同,作用于具有相同结构的不同表行?