JavaScript中eval()、with()和reduce()的用法

来源:互联网 发布:淘宝运动鞋 编辑:程序博客网 时间:2024/06/05 18:46

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
0 0