js中apply的妙用
2016-06-07 21:51
260 查看
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> </body> </html> <script> /* 我们先从Math.max()函数说起, Math.max后面可以接任意个参数,最后返回所有参数中的最大值。 比如*/ console.log(Math.max(5,8)) //8 console.log(Math.max(5,7,9,3,1,6)) //9 /*问题:如何获取一个数组的最大值*/ /*遍历*/ /* 但是在很多情况下,我们需要找出数组中最大的元素。*/ /* var arr=[5,7,9,1] alert(Math.max(arr)) // 这样却是不行的。一定要这样写*/ /*传统方式写法*/ function getMax(arr){ var arrLen=arr.length; for(var i=0,ret=arr[0];i<arrLen;i++){ ret=Math.max(ret,arr[i]); } return ret; } console.log(getMax([1,2,3,4,5,6,7])) /*这样写麻烦而且低效。如果用 apply呢,看代码:*/ /*参数数组拆分法则*/ /*传递一个数组,其实会将其拆成很多个参数*/ /*适用场景:函数可以接受不限个数的参数*/ /*这样我们只能使用arguments来管理可变参数*/ /*比如max min push join split replace*/ /*在js中有很多这样支持可变参数的函数 大家还记得我们前面写的extend,也是支持可变参数*/ /*这也是为什么apply这么流行,这么重要的原因*/ /*广泛运用在框架,算法中*/ /*巧用apply虽然传递的是数组,但是使用的时候是把数组拆开的。。 等价于 return Math.max.call(null,1,2,3,4,5);*/ /*所以等价于:Math.max(5,7,9,3,1,6)*/ function getMax2(arr){ return Math.max.apply(null,arr); /* return Math.max.call(null,1,2,3,4,5);*/ } console.log(getMax2([1,2,3,4,5,6,7])) </script>
相关文章推荐
- call/apply/bind 的理解与实例分享
- SQLServer APPLY表运算符使用介绍
- sql server 2008中的apply运算符使用方法
- javascript中apply、call和bind的使用区别
- javascript中call apply 与 bind方法详解
- javascript中call和apply的用法示例分析
- 浅谈javascript中的call、apply、bind
- JavaScript中的call方法和apply方法使用对比
- 开启Javascript中apply、call、bind的用法之旅模式
- 理清apply(),call()的区别和关系
- Javascript中call与apply的学习笔记
- 使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
- JS中使用apply、bind实现为函数或者类传入动态个数的参数
- 理解JavaScript的caller,callee,call,apply
- JavaScript中apply与call的用法意义及区别说明
- 完美解决IE低版本不支持call与apply的问题
- JavaScript中的apply()方法和call()方法使用介绍
- JavaScript学习点滴 call、apply的区别
- js apply/call/caller/callee/bind使用方法与区别分析
- Function.prototype.call.apply结合用法分析示例