首页 > 试题广场 >

var a =[1,4,5,2,9]; 下面求a中最大值正确

[单选题]
var a =[1,4,5,2,9];
下面求a中最大值的代码正确的是
  • Math.max(a)
  • Array.max(a)
  • Math.max.call(null,a)
  • Math.max.apply(null,a)
  • 以上均不是
推荐
答案是D。 使用apply方法,方法有两个参数,用作 this 的对象和要传递给函数的参数的数组。(http://www.w3school.com.cn/js/pro_js_inheritance_implementing.asp) 可以为方法指定调用对象与传入参数,并且可以让传入的参数以数组的形式组织。 Math.Max.Apply(Math,tmp); 也可以写成 Math.Max.Apply({},tmp);的简写形式
编辑于 2017-03-19 10:39:45 回复(1)
发表于 2017-09-22 23:48:15 回复(0)
Math对象包含max()方法,用于确认一组数值中的最大值。该方法接收任意多个数值参数,不接受数组参数。
要找到数组中的最值,可以使用apply()方法,D表示将Math.max()方法的执行环境切换到null上,apply()方法接收两个参数,第二个参数是一个数组。
发表于 2017-06-22 22:05:02 回复(1)
我选以上均不是   有错吗
发表于 2017-04-02 11:50:50 回复(0)
call()需要传递明确几个参数,写全,
apply()可以接收一个数组作为参数,不管数组中有多少个元素
发表于 2017-04-07 14:47:17 回复(2)
Math.max(...a)
发表于 2017-12-01 19:20:08 回复(2)
分析选项:
发表于 2021-01-10 18:21:14 回复(0)
D表示将Math.max()方法的执行环境切换到null上,apply()方法接收两个参数,第二个参数是一个数组。
测试了下
Math.max.apply(null,a)
Math.max.apply(undefined,a)
Math.max.apply(Number,a)
Math.max.apply(String,a)
Math.max.apply(Object,a)
Math.max.apply(Boolean,a)
Math.max.apply(window,a)
Math.max.apply(Array,a)
Math.max.apply(Function,a)
都也可以。
null 之类的,是来充当 apply() 方法的第一个参数的吧。

编辑于 2018-03-17 18:49:27 回复(0)
因为数组里面是没有直接可以求解到最大值的函数,只好找math,这里的call就是借用的意思.而apply也能实现这个功能.只不过他们两第二个参数是有差别的,call只能是一个参数,而apply可以是一个数组甚至是对象
发表于 2018-04-16 20:24:03 回复(0)
Max是Math对象的方法,由于a是一个数组对象,而Max又是一个Math对象,所以在返回最大值的同时需要指名返回的值属于哪种对象,只要指定了一个真实存在的对象,就会返回最大值。call和apply的第一个参数都是this指向,而call从第二个参数开始,代表了第一个要计算的实参,以此类推,第三个参数就是第二个实参。。。第n个代表n-1个实参。和apply的区别仅在于,apply把除了第一个参数之后的所有参数,都纳入一个数组里。
发表于 2018-01-12 22:45:26 回复(0)
这里是ES5的写法,ES6是Math.max(...a)。剩余运算符
发表于 2022-04-06 19:51:17 回复(0)
call()与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组
发表于 2019-06-25 10:15:49 回复(0)
由于Math.max执行的参数是若干数据如: Math.max(1,7,3,6) // 7 所以当存在数组时用扩展运算符解构数组中的数据: let a = [1,7,3,6] Math.max(...a) // 7 或使用apply转换数组,因为调用Math.max是window自身,我们无需改变this指向,即第一个参数传入null Math.max(null,a) // 7
发表于 2021-10-21 13:03:04 回复(0)
apply传入参数数组
发表于 2021-08-29 19:33:14 回复(0)
call方法是在对象之后,将实参依次传递,需要将参数写全;
apply方法是在对象之后,将需要的实参封装到一个数组中统一传递。
发表于 2021-08-23 14:03:04 回复(0)
分析选项: A:Math.max(a)  Math.max()方法比较的是多个数值参数,不接受一个数组作为参数,可用展开符取出数组元素作为参数使用, Math.max(...a)  更多关于Math.max()的用法可以查看: https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Math/max B:Array.max(a) Array类型没有定义这个方法。详情可查看:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array C:Math.max.call(null,a) D:Math.max.apply(null,a) 关于C和D的区别其实是.call()方法和.apply()方法的区别: 语法格式对比:.call(对象,参数1,参数2),VS .apply(对象,[参数1,参数2]), 它们的第一个对象类型的参数都是用来重定向this的,从第二个参数开始.call()是直接一个个传入,而.apply()是支持传入一个参数数组 所以D正确而C错误,参考A,将C改为Math.max.call(null,...a)即为正确。 详情可看:https://www.runoob.com/w3cnote/js-call-apply-bind.html
发表于 2021-06-22 23:27:18 回复(0)
 // 求最大值 :

        var a = [1, 2, 5, 4, 9];
        var b = Math.max(a);
        // var c = Array.max(a); //保错
        var d = Math.max.call(null, a);
        var re = Math.max.apply(null, a);

        console.log(b);// NaN
        console.log(d);// NaN
        console.log(re);// 9

发表于 2021-02-05 11:14:27 回复(0)
使用call:Math.max.call(null,...a)
使用apply:Math.max.apply(null,a)
发表于 2020-09-26 18:24:13 回复(1)

call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了:

call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔

apply 的所有参数都必须放在一个数组里面传进去 

bind 除了返回是函数以外,它 的参数和 call 一样。


发表于 2019-08-13 09:50:35 回复(1)
Math.max() 函数返回多个数字中最大的数字 Math.max.apply(null, numArray):返回数组numArray中最大的数组,等价于Math.max(numArray[0],....,numArray[n]) Array没有max方法
发表于 2019-04-19 13:54:26 回复(0)
为什么都一个参数是null,有谁可以回答一下吗
发表于 2017-07-20 10:39:13 回复(3)