javascript - 为什么这段代码必须使用 Math.min.apply 而不仅仅是 Math.min
问题描述
我正在阅读这篇文章中的以下缩写代码,它在日期列表中获取“最小”日期:
var dates=[];
dates.push(new Date("2011/06/25"))
dates.push(new Date("2011/06/26"))
dates.push(new Date("2011/06/27"))
var minDate=new Date(Math.min.apply(null,dates));
有人能解释为什么我们需要在这里使用.apply
吗?
我知道它.apply
用于执行具有提供this
值的函数,但我不明白为什么代码需要min
调用该函数this=null
以及为什么替换时代码不起作用
Math.min.apply(null, dates)
:Math.min(dates)
解决方案
这是因为该Function.prototype.apply()
方法有两个参数。第一个是新分配的this
值,第二个是将传递给被调用函数的参数数组。
您的示例对第一个参数没有做任何特别的事情,但对第二个参数却有。
Math.min()
接受无限数量的参数。您的示例将日期数组作为参数传递,并将数组中的项目作为参数传播。现在你可以用扩展语法做这样的事情。
var minDate = new Date(Math.min(...dates));
推荐阅读
- c# - EF Core 获取树层次结构直到最后一个孩子
- python - 如何将值从 python 脚本传递给 bash 脚本
- reactjs - redux store 应该如何在大型 React 应用中使用?
- d3.js - 如何获取选定的节点 ID - Js Tree ContextMenu
- c# - 带有参数 Mediatr 和 Moq 的模拟处理程序
- android - Firebase Crashlytic 不显示带有 LLD 链接器 Android 应用程序的堆栈 strace
- vb.net - 如何在循环中使用变量引用控件?
- qt - 导航到不同页面时,QML 保存页面的最后状态
- php - 按内部循环 PDO 排序
- java - 将图像上传到firebase中的不同文件夹