TypeScript学习——let、var
一、let 与 var
let 是在代码块内有效,var 是在全局范围内有效:
{
let a = 0;
var b = 1;
}
a // ReferenceError: a is not defined
b // 1
二、for 循环计数器用let还是var, let更合适
说明:javascript是单线程的,setTimeout()等当前程序线程执行完, 才开始计时,计时到了之后重新建立一个新的程序线程来执行setTimeout()内的代码。
//打印出来 i都是3, var是全局范围内有效,i++ 触发了3次,特别注意i最后一次++后是3而不是2
for (var i = 0; i < 3; i++) {
setTimeout(function (){
console.log("i:" + i);
});
}
//打印出来 i都是0、1、2, 变量 j 是用 let 声明的,当前的 i 只在本轮循环中有效,每次循环的 j 其实都是一个新的变量
for (let j = 0; j < 3; j++) {
setTimeout(function (){
console.log("j:" + j);
});
}
以下为代码示例:
<html>
<head></head>
<body>
</body>
</html>
<script>
{
let a = "test1";
var b = "test2";
alert("a:" +a) // a:test1
alert("b:" +b) // a:test1
}
alert("b:" +b);// var 是在全局范围内有效
//alert("a:" +a); // 报错 ReferenceError: a is not defined let 是在代码块内有效
//打印出来 i都是3, var是全局范围内有效,i++ 触发了3次,特别注意i最后一次++后是3而不是2
for (var i = 0; i < 3; i++) {
setTimeout(function (){
console.log("i:" + i);
});
}
//打印出来 i都是0、1、2
for (let j = 0; j < 3; j++) {
setTimeout(function (){
console.log("j:" + j);
});
}
</script>