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

http://blog.csdn.net/f247316233/article/details/52445040

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
 
 
  • 1
  • 2
  • 1
  • 2

2、with()的用法 
with的语法结构如下

        with (object) {
            // statements
        }
 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

用法如下:

        var obj = {a: '111', b: '2222', c: '23456'};
        with (obj) {
            with (document) {
                write(a + '<br />');  // 111
                write(b + '<br />');  // 2222
                write(c + '<br />');  // 23456
            }
        }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

以上代码相当于:

        var obj = {a: '111', b: '2222', c: '23456'};
        document.write(obj.a + '<br />');
        document.write(obj.b + '<br />');
        document.write(obj.c + '<br />');
 
 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

注意:因为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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值