function prefill(num, value) {
if(typeof num === 'boolean' || ~~num != num || +num < 0) throw new TypeError(num + ' is invalid')
return Array.apply(null, Array(+num)).map(function (d,i) { return value })
我想知道return后面Array.apply(null,Array(+num))是什么意思??为什么要这样写??语法我是知道的,但是这样写我就不懂了!
javascript 二维数组
答案:2 悬赏:50 手机版
解决时间 2021-03-09 17:24
- 提问者网友:孤山下
- 2021-03-09 04:08
最佳答案
- 五星知识达人网友:野慌
- 2021-03-09 05:14
我觉得你这里应该是错误的用法,应该是:
Array.apply(null,new Array(+num))这样的吧,是不是少了 new ?
javascript 的函数有两个告别的方法 call 和 apply,这两个方法的作用都是把函数里的 this 指针绑定到这两个方法的第一个参数指定的对象(也就是相当于这个对象临时多出了这个函数作为方法),而区别是 call 是把除了第一个参数外的所有参数依次传递给函数,而 apply 是把第二个参数的数组元素依次传递给函数,所以 apply 的第两个参数指能为数组(当然也可能不传)
function A(a, b){
this.x = [a, b]
}
function B(e, f){
this.X = [e, f]
}
A.prototype.B = B;
var a = new A(1, 2), b = {};
a.B(3, 4);
A.call(b, 1, 2);
B.apply(b, [3, 4]);
// 最后 a.x 和 b.x, a.X 和 b.X 都是一样的(本来 b 是没有 A 构造, B 方法的)这里就可以知道 B.apply 这里的作用了吧
根据以上分析,我觉得你这个代码有点多余
目的应该是要生成一个 num 大小的值都为 value 的数组,完全可以这样:
return (new Array(num)).map(function(d,i){return value}) 测试了下,你的代码正常,我的这个代码不能用,无法理解,不就是 Array 的 map 方法么,为什么我这样不对呢。。。
Array.apply(null,new Array(+num))这样的吧,是不是少了 new ?
javascript 的函数有两个告别的方法 call 和 apply,这两个方法的作用都是把函数里的 this 指针绑定到这两个方法的第一个参数指定的对象(也就是相当于这个对象临时多出了这个函数作为方法),而区别是 call 是把除了第一个参数外的所有参数依次传递给函数,而 apply 是把第二个参数的数组元素依次传递给函数,所以 apply 的第两个参数指能为数组(当然也可能不传)
function A(a, b){
this.x = [a, b]
}
function B(e, f){
this.X = [e, f]
}
A.prototype.B = B;
var a = new A(1, 2), b = {};
a.B(3, 4);
A.call(b, 1, 2);
B.apply(b, [3, 4]);
// 最后 a.x 和 b.x, a.X 和 b.X 都是一样的(本来 b 是没有 A 构造, B 方法的)这里就可以知道 B.apply 这里的作用了吧
根据以上分析,我觉得你这个代码有点多余
目的应该是要生成一个 num 大小的值都为 value 的数组,完全可以这样:
return (new Array(num)).map(function(d,i){return value}) 测试了下,你的代码正常,我的这个代码不能用,无法理解,不就是 Array 的 map 方法么,为什么我这样不对呢。。。
全部回答
- 1楼网友:独行浪子会拥风
- 2021-03-09 05:49
js 中没有真正的二维数组的概念。
只是模拟二维数组的样式而已。
arrnum[i] = []; arrnum 是一个数组,再定义arrnum里所以的元素的值都空数组。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯