1、eval()的用法
eval(string)函数可计算某个字符串,并执行其中的JavaScript代码。参数string只能是原始字符串,不能是String对象。
document.write(eval('2+2') + '<br />'); // 4
eval('var a = 2, b = 4; document.write(a * b);'); // 8
2、with()的用法
with的语法结构如下
with (object) {
// statements
}
用法如下:
var obj = {a: '111', b: '2222', c: '23456'};
with (obj) {
with (document) {
write(a + '<br />'); // 111
write(b + '<br />'); // 2222
write(c + '<br />'); // 23456
}
}
以上代码相当于:
var obj = {a: '111', b: '2222', c: '23456'};
document.write(obj.a + '<br />');
document.write(obj.b + '<br />');
document.write(obj.c + '<br />');
注意:因为js解释器需要检查with块中的变量是否属于with包含的对象,所以with语句会影响js语句的执行速度,且js语句很难被优化,所以在高效代码开发中应尽量避免使用with语句。
3、reduce()的用法
JavaScript中的reduce针对数组从左到右的两个元素依次使用同一个回调函数进行处理,直到把数组的元素都处理一遍。语法如下:
array.reduce(callback[, initialValue]);
3.1、callback,处理数组元素的回掉函数,可以有四个参数,
function(previousValue, currentValue, index, array){}
参数依次是:上一次的值,当前值,当前值的索引,数组
3.2、initialValue,作为回调函数(callback)第一次调用的previousValue(上一次的值)。
用法如下:
// 处理一维数组
var arr = [4, 3, 2, 1];
document.write(arr.reduce((x, y)=>(x + y))); // 10
document.write('<br />');
document.write(arr.reduce((x, y)=>(x + y), 5)); // 15
document.write('<br />');
// 扁平化二维数组
var ar = [[1, 2], [2, 3], [4,6]];
document.write(ar.reduce((x, y)=>x.concat(y)), []); // 1,2,2,3,4,6