作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以在另一个答案中(How can I create a two dimensional array in JavaScript?)我看到了以下内容
function createArray(length) {
var arr = new Array(length || 0),
i = length;
if (arguments.length > 1) {
var args = Array.prototype.slice.call(arguments, 1);
while(i--) arr[length-1 - i] = createArray.apply(this, args);
}
return arr;
}
createArray(); // [] or new Array()
createArray(2); // new Array(2)
createArray(3, 2); // [new Array(2),
// new Array(2),
// new Array(2)]
这是什么意思:
var arr = new Array(length || 0),
i = length;
我感到困惑的两个部分是 length || 0
以及逗号后跟 i = length
的用法。对于 length || 0
我做了一些实验,我很困惑。这是一个 JSFiddle,我在其中尝试使用变量 length
然后与变量 blah
完全相同并且仅在第二个上出现错误:https://jsfiddle.net/vrp0uhtL/4/您需要进入调试器。我只在 chrome 上测试过这个。
对于,i = length
这只是声明 i
的简写吗也作为同一行的 var?
谢谢
编辑:因为我发现发生了一些奇怪的事情,并区分这个问题与其他类似的问题:为什么会这样:
var arr = new Array(length || 0)
console.log(arr)
var arr2 = new Array(blah || 0)
console.log(arr2)
当长度或 blah 都没有在其他地方定义时,只会在第二个上产生错误;更具体地说,为什么即使我没有定义 length,它的值也始终为 0(请参阅上面的 JSFiddle)
最佳答案
在JS中,如果你在赋值操作中看到||
,例如x = a || b
表示只要定义了 a
,x
就会被设置为值 a
,否则将被设置为b
。
关于javascript - 这个 JS 语法是什么意思? 'length' 是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38076991/
我是一名优秀的程序员,十分优秀!