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

Larkin - let vs var

时间:2017-12-01 15:13:06      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:div   i++   变量   col   img   for   一个   bsp   length   

我们先上一段 var 代码

 1 function ceshi(bo): number {
 2     let num = 1;
 3     if(bo){
 4         var b = 12;
 5         b += num;
 6     }
 7     return b;
 8     
 9 }
10 let val = ceshi(true);
11 console_log(val); // 13

 

function ceshi(bo): number {
    let num = 1;
    if(bo){
        let b = 12;
        b += num;
    }
    return b; // error 
    
}

 

技术分享图片

因此我们发现 var 申明变量会提前,而 let 声明属于块级作用域。

下面我们来看一个 for 经典:

function ceshi(){
    for(var i=0; i<10; i++){
        setTimeout(function (){
            console.log(i);
        },i*1000);
    }
}
ceshi(); // 10 10 10 10 10 10 10 10 10 10

可见这并不是我们想要的结果,若我们将 var 改为 let:

function ceshi(){
    for(let i=0; i<10; i++){
        setTimeout(function (){
            console.log(i);
        },i*1000);
    }
}
ceshi(); // 0 1 2 3 4 5 6 7 8 9

可见我们需要谨慎使用 var ,最后一个例:

 1  
 2  let classArr: number[][] = [
 3     [65,79,58,60],
 4     [98,69,78,86],
 5     [19,43,34,81],
 6     [56,59,66,45],
 7  ];
 8  function ceshi(arr: number[][]){
 9     let sum: number = 0;
10     let student, len = arr.length;
11     for(let i=0; i<len; i++){
12         student = arr[i];
13         for(let i=0; i<student.length; i++){
14             sum += student[i];
15         }
16     }
17     console.log(sum);
18  }
19  ceshi(classArr); // 996
20  

若我们将 let i 改为 var i ,这将会有严重的作用域错误理解,最后。。。

ok, so perfect!不解释,你懂得!

Larkin - let vs var

标签:div   i++   变量   col   img   for   一个   bsp   length   

原文地址:http://www.cnblogs.com/huangkaijin/p/7941813.html

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