gpt4 book ai didi

javascript - (n > 0 || -1) 是否评估为真/假?如果是这样,它怎么能成倍增加呢?

转载 作者:行者123 更新时间:2023-11-29 17:17:14 27 4
gpt4 key购买 nike

我正在查看来自 MDNindexOf 的实现.这是我很好奇的:

n = (n > 0 || -1) * Math.floor(Math.abs(n));

在我看来,(n > 0 || -1) 将评估为 truefalse,但它是倍增?

如果链接断开,这是来自 MDN 的 indexOf 实现:

if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 1) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}

最佳答案

It seems to me that (n > 0 || -1) is going to evaluate to true or false

没有。 || JavaScript 中的运算符是 curiously powerful , 如果 n<= 0 , 该表达式导致 -1 , 不是 false .

如果n > 0 , 该表达式确实会产生 true ,是的,他们真的在成倍增加true按一个数字。没关系(我不会这样做,但这是允许的),true将自动强制转换为数字 ( 1 ),因为 * 的两边在乘法之前被强制转换为数字。各种类型到数字的转换在Section 9.3规范。

关于javascript - (n > 0 || -1) 是否评估为真/假?如果是这样,它怎么能成倍增加呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16421799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com