javascript - Javascript Math.max 和 Math.min 实际上是如何工作的?

标签 javascript math

我真的很好奇这些功能究竟是如何工作的?我知道有很多关于如何使用这些的问题,我已经知道如何使用它们,但是我无法在任何地方找到如何在数组上实际实现这个功能,例如,如果没有这样的功能?如果没有助手,您将如何编写这样的函数?

最佳答案

这是 Chrome V8 引擎中的 Math.max 代码。

function MathMax(arg1, arg2) {  // length == 2
  var length = %_ArgumentsLength();
  if (length == 2) {
    arg1 = TO_NUMBER(arg1);
    arg2 = TO_NUMBER(arg2);
    if (arg2 > arg1) return arg2;
    if (arg1 > arg2) return arg1;
    if (arg1 == arg2) {
      // Make sure -0 is considered less than +0.
      return (arg1 === 0 && %_IsMinusZero(arg1)) ? arg2 : arg1;
    }
    // All comparisons failed, one of the arguments must be NaN.
    return NaN;
  }
  var r = -INFINITY;
  for (var i = 0; i < length; i++) {
    var n = %_Arguments(i);
    n = TO_NUMBER(n);
    // Make sure +0 is considered greater than -0.
    if (NUMBER_IS_NAN(n) || n > r || (r === 0 && n === 0 && %_IsMinusZero(r))) {
      r = n;
    }
  }
  return r;
}

Here是存储库。

关于javascript - Javascript Math.max 和 Math.min 实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851810/

相关文章:

c++ - 商运算符赋值?

c++ - 我可以用算术运算的方式编写关系运算符吗?

math - 用于任意奇数个元素的石头剪刀布

javascript - 单击链接时显示相关 div

javascript - 如何在 Chrome 控制台中调试时更改 js 局部变量的值

javascript - 错误的 EOL 转义

java - 四面体Java3d

c++ - 在 NS-3 C++ 中比较两个 double 值时出现奇怪的数学错误

javascript - 有序列表;使用 javascript 和 json

javascript - 如何在mvc4中动态生成的表上获取jquery中的TD文本?