美文网首页让前端飞Java 核心技术
Js中apply和Math.max()函数的问题及区别

Js中apply和Math.max()函数的问题及区别

作者: a333661d6d6e | 来源:发表于2018-12-11 22:01 被阅读0次

    这篇文章主要介绍了js中apply和Math.max()函数的问题,本文给大家带来两种答案,每一种答案给大家介绍的非常详细,在文章底部给大家提到了js中Math.max.apply和Math.max的区别,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

    下面给大家介绍js中apply和Math.max()函数的问题,具体内容如下所示:

    var arr=[1,3,6,3,7,9,2];
    console.log(Math.max.apply(null,arr));
    

    答案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, ...)
    //欢迎加入前端全栈开发交流圈一起学习交流:864305860
    

    在此处,使用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//欢迎加入前端全栈开发交流圈一起学习交流:864305860
    > 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//欢迎加入前端全栈开发交流圈一起学习交流:864305860
    

    结语

    感谢您的观看,如有不足之处,欢迎批评指正。

    本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
    对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
    最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

    相关文章

      网友评论

        本文标题:Js中apply和Math.max()函数的问题及区别

        本文链接:https://www.haomeiwen.com/subject/gscyhqtx.html