typescript块级作用域变量

简介: typescript块级作用域变量

块级作用域变量的获取

在我们最初谈及获取用var声明的变量时,我们简略地探究了一下在获取到了变量之后它的行为是怎样的。 直观地讲,每次进入一个作用域时,它创建了一个变量的 环境。 就算作用域内代码已经执行完毕,这个环境与其捕获的变量依然存在。

function theCityThatAlwaysSleeps() {
    let getCity;
 
    if (true) {
        let city = "Seattle";
        getCity = function() {
            return city;
        }
    }
 
    return getCity();
}

因为我们已经在city的环境里获取到了city,所以就算if语句执行结束后我们仍然可以访问它。

回想一下前面setTimeout的例子,我们最后需要使用立即执行的函数表达式来获取每次for循环迭代里的状态。 实际上,我们做的是为获取到的变量创建了一个新的变量环境。 这样做挺痛苦的,但是幸运的是,你不必在TypeScript里这样做了。

let声明出现在循环体里时拥有完全不同的行为。 不仅是在循环里引入了一个新的变量环境,而是针对 每次迭代都会创建这样一个新作用域。 这就是我们在使用立即执行的函数表达式时做的事,所以在 setTimeout例子里我们仅使用let声明就可以了。

for (let i = 0; i < 10 ; i++) {
    setTimeout(function() {console.log(i); }, 100 * i);
}

const 声明

const 声明是声明变量的另一种方式。

const numLivesForCat = 9;

它们与let声明相似,但是就像它的名字所表达的,它们被赋值后不能再改变。 换句话说,它们拥有与 let相同的作用域规则,但是不能对它们重新赋值。

这很好理解,它们引用的值是不可变的

const numLivesForCat = 9;
const kitty = {
    name: "Aurora",
    numLives: numLivesForCat,
}
 
// Error
kitty = {
    name: "Danielle",
    numLives: numLivesForCat
};
 
// all "okay"
kitty.name = "Rory";
kitty.name = "Kitty";
kitty.name = "Cat";
kitty.numLives--;


相关文章
|
1月前
|
JavaScript 前端开发 编译器
TypeScript 中的变量声明:变量声明的语法、变量的作用域、变量的类型推断和类型断言
TypeScript 中的变量声明:变量声明的语法、变量的作用域、变量的类型推断和类型断言
46 1
|
1月前
|
JavaScript
【TypeScript】一直提示 :无法重新声明块范围变量
【TypeScript】一直提示 :无法重新声明块范围变量
【TypeScript】一直提示 :无法重新声明块范围变量
|
11月前
|
JavaScript 编译器
面试题-TS(二):如何定义 TypeScript 中的变量和函数类型?
在TypeScript中,我们可以使用冒号(:)来指定变量的类型。以下是一些常见的变量类型:
|
Dart JavaScript 前端开发
TypeScript(三)定义变量和数据类型
这个章节我们来学习如何在TypeScript中定义变量,以及JavaScript类型在TypeScript中的变化以及TypeScript中新增的类型
446 0
TypeScript(三)定义变量和数据类型
|
JavaScript
TypeScript constructor signature 类型的变量赋值方式
TypeScript constructor signature 类型的变量赋值方式
103 0
TypeScript constructor signature 类型的变量赋值方式
|
JavaScript 前端开发
TypeScript 的变量定义
TypeScript 的变量定义
TypeScript 的变量定义
|
JavaScript 前端开发
TypeScript class 的静态成员变量
TypeScript class 的静态成员变量
243 0
TypeScript class 的静态成员变量
|
JavaScript
什么是 TypeScript 变量的 declared type
什么是 TypeScript 变量的 declared type
101 0
什么是 TypeScript 变量的 declared type
|
JavaScript
什么是 TypeScript 变量的 declared type
什么是 TypeScript 变量的 declared type
157 0
什么是 TypeScript 变量的 declared type
|
JavaScript 前端开发 索引
TypeScript 的变量定义
TypeScript 的变量定义
109 0