Larkin - let vs var
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Larkin - let vs var相关的知识,希望对你有一定的参考价值。
我们先上一段 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的主要内容,如果未能解决你的问题,请参考以下文章
用下面的代码解释一下javascript中var和let关键字的区别
Swift - 以编程方式创建视图时的 Lazy Var vs. Let(节省内存)