1,[‘1’, ‘2’, ‘3’].map(parseInt) what & why ?
这个相当于返回【parseInt(‘1’,0),parseInt(‘2’,1),parseInt(‘3’,2】
当parseInt的第二个参数区间介于2-36之间,超出范围就返回NaN,或者第一个参数不能按照第二个参数的进制解析时,返回NaN.
例如:[‘1’, ‘2’, ‘1’, ‘2’].map(parseInt) 返回[1,NaN,1,2]
2,[[3,2,1].reduce(Math.pow), [].reduce(Math.pow)]
首先看一下reduce函数的用法:
prev:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 init,其值则为 init,否则为数组索引为 0 的元素 arr[0]。
cur:数组中正在处理的元素。在第一次调用时,若指定了初始值 init,其值则为数组索引为 0 的元素 arr[0],否则为 arr[1]。
index:数组中正在处理的元素的索引。若指定了初始值 init,则起始索引号为 0,否则从索引 1 起始。
arr:用于遍历的数组。
arr.reduce(function(prev,cur,index,arr){
...
}, init);
其次看一下Math.pow方法:Math.pow(底数x,指数y),其实就是数学的求次方
这里题目相当于先计算Math.pow(3,2),得到9,就变成了[9,1].reduce(Math.pow)
得到9
If the array is empty and no initialValue was provided, TypeError would be thrown.
如果数组是空的&&没有提供初始值,则程序就会报错
3,什么是立即执行函数?使用立即执行函数的目的是什么?
声明一个函数,然后立即调用这个函数就叫做立即执行函数,
优点:1不必为函数命名,避免了污染全局变量
2立即执行函数会形成一个单独的作用域,我们可以封装一些临时变量或者局部变量,避免污染全局变量
1.(function(){...})()
(function(x){
console.log(x);
})(12345)
比如你想在页面加载完成后做一些事情,比如更改一个dom元素的样式,但是这个更改在初始化以后只需要做一次,那你完全可以把要更改的内容写在一个立即执行函数里面,这样函数里面用的变量在执行完成后就会回收掉,避免污染全局变量。