在Math.max/min數學方法中,以數組最為參數的用法?

在Math.max/min數學方法中,以數組最為參數的用法?

為什麼在Math.max/min數學方法中,數組必須以『...數組名』來傳參,而不能使用『數組名』呢?
當我使用後者進行傳參會產生Not a Number,又是為什麼呢?
[以下附上程式碼]

var str = "hello,immoc!";

console.log(str.substring(6, 12));

var date = new Date("2019-5-1");

console.log(date.getFullYear());

console.log(date.getMonth());

console.log(date.getDate());


console.log("最大值為: " + Math.max(20, 41, 15, 8));

console.log("最小值為: " + Math.min(20, 41, 15, 8));

var arr = [20, 41, 15, 8];

//正常

console.log("最大值為: " + Math.max(...arr));

console.log("最小值為: " + Math.min(...arr));


//產生NaN

console.log("最大值為: " + Math.max(arr));

console.log("最小值為: " + Math.min(arr));


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,apply方法用来改变函数的执行上下文(this),第一个参数是对象(this),第二个参数是一个数组,所以null是指上下文,这个方法使用并不是很多,同学只要记住这个方法如何使用即可

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


阿寶1118 提问者 2020-08-28 18:50:29

好幫手慕阿園你好,經過您的指導並在網路上搜索,發現apply的方法的確可以讓數組被接受,其原理是將數組中的所有元素一個個當作參數傳入函數中,但我不懂為何第一個參數是放入null第二個參數才是放入數組呢?

好帮手慕阿园 2020-08-28 17:20:55

同学你好,是的,js中Math对象的max和min方法不支持数组作为参数直接传入,所以会输出NaN;解决该问题的方法就是同学所说的,可以传入Math.min(...array);,但是低版本的js不支持这种写法

或者可以使用Math.min.apply(null, arr)方法传入数组

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师