十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这期内容当中小编将会给大家带来有关apply和Math.max()函数在JavaScript中有什么区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联-专业网站定制、快速模板网站建设、高性价比诸城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式诸城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖诸城地区。费用合理售后完善,十多年实体公司更值得信赖。如下所示:
var arr=[1,3,6,3,7,9,2]; console.log(Math.max.apply(null,arr));
一直搞不懂为什么这样可以算出一个数组的大值?一直想不明白,请js高手指教一下。
答案1
Function.apply()是JS的一个OOP特性,一般用来模拟继承和扩展this的用途,对于上面这段代码,可以这样去理解:
XXX.apply是一个调用函数的方法,其参数为:apply(Function, Args),
Function为要调用的方法,Args是参数列表,当Function为null时,默认为上文,
即
Math.max.apply(null, arr)
可认为是
apply(Math.max, arr)
然后,arr是一个参数列表,对于max方法,其参数是若干个数,即
Math.max(a, b, c, d, ...)
当使用apply时,把所有参数加入到一个数组中,即
arr = [a, b, c, d, ...]
代入到原式,
Math.max.apply(null, [a, b, c, d, ...])
实际上等同于
Math.max(a, b, c, d, ...)
在此处,使用apply的优点是在部分JS引擎中提升性能。
答案2
Math.max()
方法,支持传递多个参数,比如:Math.max(1,4,2,3,7,5,6)
但是它不支持直接传递一个数组作为参数,比如:Math.max(new Array(1,4,2,3,7,5,6))
。
这里,只要我们有方法把数组,一个一个拆分开来,传递到Math.max()方法中,就实现了传递数组的方法。
所有函数都有apply(作用域链,参数)这个方法,这个函数的“参数”,接收一个数组,并且是将数组中的每个值,分开来,传递给调
补充:
Javascript中Math.max.apply和Math.max的区别
Javascript中的Math.max方法可以求出给定参数中大的数。
> Math.max('1','2','3.1','3.2') < 3.2 > Math.min(1,0,-1) < -1
但如果是数组,就不能这样调用了。
此时就用到了apply方法:
apply 方法 (Function) (JavaScript) 调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数。 apply([thisObj[,argArray]]) thisObj 可选。 要用作 this 对象的对象。 argArray
可选。 要传递到函数的一组参数。
巧妙地使数组也可以调用Math.max和Math.min。
> Math.max.apply(null, ['1','2','3.1','3.2']) < 3.2 > Math.min.apply(null, [1,0,-1]) < -1
上述就是小编为大家分享的apply和Math.max()函数在JavaScript中有什么区别了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。