码迷,mamicode.com
首页 > 其他好文 > 详细

循环中的let和const声明

时间:2017-08-25 16:50:05      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:array   func   否则   foreach   function   初始化   cti   用法   绑定   

一、循环中的let声明

       每次循环的时候let声明都会创建一个新变量i,并将其初始化为i的当前值,所以循环内部创建的每个函数都能得到属于他们的i的副本。

     最初的:

     for (var i = 0 ; i < 10 ; i++) {
   array.push(function(){
       console.log(i)
   }) 
  };
    array.forEach(function(func){
         func()
    })

    优化后:

   var array=[];
   for (var i = 0 ; i < 10 ; i++) {
       array.push(function(value){
            return function(){
                 console.log(value)
            }
       }(i))
    };
    array.forEach(function(func){
        func()
    })

 

但是用了let更方便

 var array=[];

for (let i = 0 ; i < 10 ; i++) {
   array.push(function(){
       console.log(i)
   }) 
  };
    array.forEach(function(func){
         func()
    })

 

二、循环中的const声明

   const属于常量定义,一经定义不能修改,在上述例子中,不可以用const,否则完成第一次迭代,就会抛出错误,但是可以用for  in,for  of语句的,与let用法一样

   之所以能用,主要还是因为每次迭代不会修改已有的绑定,而是会创建一个新绑定。

循环中的let和const声明

标签:array   func   否则   foreach   function   初始化   cti   用法   绑定   

原文地址:http://www.cnblogs.com/xyn0909/p/7428537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!