技术类

Typescript ES6学习(1)

2018-01-04  本文已影响0人  Simple_Learn

1.声明变量使用let或者const

首先,const是对let的一个增强,它能阻止对一个变量再次赋值。const变量的内部状态是可修改的。

例如:const a ={a:"1",b:"2"}; a.a ="3"; 这样做,是允许的。

但是在typescript中,TypeScript允许你将对象的成员设置成只读的。

我们在浏览器控制台可以用如下代码打印出:

for(var i=0;i<10;i++){

           setTimeout(

                     function(){

                            console.log("每一次的值:",i);

                                },

                    i*100);

}

会打印出如下结果

每一次的值:10

这和我们预料的结果不一致,那我们修改一下代码:

一个通常的解决方法是使用立即执行的函数表达式(IIFE)来捕获每次迭代时i的值。

for (var i = 0; i < 10; i++) { 

                   (function(i) {

                        setTimeout(function() { console.log(i); }, 100 * i);

                   })(i);

}

得出结果如下:

或者可以使用闭包的方式:

for(var i=0;i<10;i++){

           setTimeout(

                        (function(i){

                                 console.log("每一次的值:",i);

                           })(i),

           i*100);

}

得出的结果如下:

那么如果使用let声明变量,那么如下:

当let声明出现在循环体里时拥有完全不同的行为。 不仅是在循环里引入了一个新的变量环境,而是针对每次迭代都会创建这样一个新作用域。

这就是let声明的块级作用域。

本次先到这,下次继续,如有错误,请指正,谢谢。

上一篇 下一篇

猜你喜欢

热点阅读