首页 > 试题广场 >

语句var arr=[a,b,c,d];执行后,数组arr中

[不定项选择题]
语句var arr=[a,b,c,d];执行后,数组arr中每项都是一个整数,下面得到其中最大整数语句正确的是哪几项?
  • Math.max(arr)
  • Math.max(arr[0], arr[1], arr[2], arr[3])
  • Math.max.call(Math, arr[0], arr[1], arr[2], arr[3])
  • Math.max.apply(Math,arr)
A选项错误     因为函数 Math.max(x);的参数是Number类型,可以是小数,整数,正数,负数或者是0.如果不是上面所述类型就会返回NaN.
编辑于 2016-03-09 18:51:37 回复(0)
Math.max(args...)传入参数是任意数量的值
A  传入数组,所以错误
B  可以
C  Function.call()可以传入任意多个参数,C正确
D  Function.apply()第二个参数以数组形式传递,D正确

发表于 2016-09-23 16:04:32 回复(3)
js函数调用,如果未指明函数所指的类,即直接调用functionA(),this关键字指向当前环境即window对象,相当于调用window.functionA()。call、apply方法的第一个参数是this关键字,即指明functionA()是哪一个对象的方法。apply以数组传递参数,call独立传递。
发表于 2015-10-13 20:44:08 回复(2)
Math.max()  只能接受一个个number的值作为参数,不能传入数组。
可是Math.max.apply(Math,arr)  这样就可以使用数组了。满满的套路

编辑于 2017-04-09 15:34:06 回复(0)
函数Math.max()传入的参数必须是整数,小数,或0,其他类型就会返回NaN,js中call和apply方法可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为有thisObj指定的新对象
如下示例
< input  type ="text"  id ="myText"    value ="input text" >
< script >
    
function  Obj(){ this .value = " 对象! " ;}
    
var  value = " global 变量 " ;
    
function  Fun1(){alert( this .value);}

    window.Fun1();   
// global 变量
    Fun1.call(window);   // global 变量 ,              this为Fun1,thisObj为window,初始的上下文对象由Fun1指向了window
    Fun1.call(document.getElementById('myText'));   // input text
    Fun1.call( new  Obj());    // 对象!初始的上下文文对象指向了Obj
</ script >
apply和call的作用一样,只是传入的参数不同
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])

同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入
发表于 2016-06-23 18:45:24 回复(2)
不懂A和D的区别???

发表于 2016-03-13 14:48:36 回复(4)
call第一个参数是调用对象,第二个参数可为多个参数,直接将数组项带入;apply第二个参数是数组。
发表于 2022-03-28 08:43:03 回复(0)
Math.max可用于找出参数中的最大值,但不能传入数组做为参数,所以A错B对 apply和call第一个参数为this的指向,apply第二个参数为一个数组,数组成员做为前面方法的参数,call第一个参数后面的参数为前面方法的参数。所以C和D都对。
发表于 2019-03-18 09:06:21 回复(0)
max是math对象的方法,使用call和apply时要指定
发表于 2019-03-05 17:41:35 回复(0)
Math.max(...arr)
发表于 2017-05-31 15:41:29 回复(0)
Math.Max参数是number类型
发表于 2021-08-06 20:48:05 回复(0)
MGT头像 MGT

发表于 2017-08-25 16:37:27 回复(0)
C D 为什么第一个参数要传入Math???
发表于 2017-05-03 08:40:49 回复(6)

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

call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,直接放到后面 obj.myFun.call(db,'成都', ... ,'string' )

apply 的所有参数都必须放在一个数组里面传进去 obj.myFun.apply(db,['成都', ..., 'string' ])

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

发表于 2021-12-01 10:56:21 回复(0)
这里b选项是最中规中矩的调用max的方法,其参数要求是需要比较的值,2个及以上。C和D是改变了function的this,利用了apply以及call的参数特性,apply第二个参数是参数数组,call是单独的值,因此这里用apply方法写是最简洁的。
发表于 2017-08-16 11:02:02 回复(1)
发表于 2023-08-10 00:27:51 回复(0)
3
发表于 2022-09-25 09:26:16 回复(0)
大家能解答一下call 和apply第一和参数是Math是有什么用吗,是null不也是可以吗。
发表于 2022-03-02 09:53:23 回复(1)
1,call()、apply()、bind() 都是用来重定义 this 这个对象的! 如:  obj.myFun.call(db);    // 德玛年龄 99 obj.myFun.apply(db);    // 德玛年龄 99 obj.myFun.bind(db)();   // 德玛年龄 99 以上出了 bind 方法后面多了个 () 外 ,结果返回都一致! 由此得出结论,bind 返回的是一个新的函数,你必须调用它才会被执行。 2,对比call 、bind 、 apply 传参情况下    obj.myFun.call(db,'成都','上海');     // 德玛 年龄 99 来自 成都去往上海 obj.myFun.apply(db,['成都','上海']); // 德玛 年龄 99 来自 成都去往上海 obj.myFun.bind(db,'成都','上海')(); // 德玛 年龄 99 来自 成都去往上海 obj.myFun.bind(db,['成都','上海'])();   // 德玛 年龄 99 来自 成都, 上海去往 undefined   微妙的差距! 从上面四个结果不难看出: call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象,第二个参数差别就来了: call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,直接放到后面 obj.myFun.call(db,'成都', ... ,'string' )。 apply 的所有参数都必须放在一个数组里面传进去 obj.myFun.apply(db,['成都', ..., 'string' ])。 bind 除了返回是函数以外,它 的参数和 call 一样。 当然,三者的参数不限定是 string 类型,允许是各种类型,包括函数 、 object 等等!
发表于 2021-07-28 23:01:46 回复(0)
CD其实是一样的..
发表于 2021-02-27 03:57:17 回复(0)