我想的一般问题是:|| 什么时候开始?返回左边的项目,什么时候返回右边的项目?
具体问题是为什么这不起作用:
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/