likes
comments
collection
share

TypeScript的变量声明

作者站长头像
站长
· 阅读数 67

letconst是JavaScript里相对较新的变量声明方式 。 像我们之前提到过的, let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题。 const是对let的一个增强,它能阻止对一个变量再次赋值。

因为TypeScript是JavaScript的超集,所以它本身就支持letconst。 后面我们会详细说明这些新的声明方式以及为什么推荐使用它们来代替 var


var 声明

我们可以定义一个名为a值为25的变量;


var a = 25;

也可以在函数内部定义变量:


function f() {
    var message = "Hello, world!";
    return message;
}


我们也可以在其它函数内部访问相同的变量


function f() {
    var a = 25;
    return function g() {
        var b = a + 30;
        return b;
        }
    }
var g = f();
g(); // returns 55;


let 声明

现在你已经知道了var存在一些问题,这恰好说明了为什么用let语句来声明变量。 除了名字不同外, letvar的写法一致。**


let name = "liming";

当用let声明一个变量,它使用的是词法作用域块作用域。 不同于使用 var声明的变量那样可以在包含它们的函数外访问,块作用域变量在包含它们的块或for循环之外是不能访问的

    function f(input: boolean) {
    let a = 100;
    if (input) {
        // Still okay to reference 'a'
        let b = a + 1;
        return b;
    }
    // Error: 'b' doesn't exist here
    return b;
}


const声明

const 声明是声明变量的另一种方式,它与let声明相似,但是就像它的名字所表达的,它们被赋值后不能再改变。 换句话说,它们拥有与 let相同的作用域规则,但是不能对它们重新赋值。即他是个固定值


const a = 9;
const b = {
name: "Lisa",
numLives: a,
} 

// Error 
b = {
name: "Roman",
numLives: a
};

// all "okay"
b.name = "Robin";
b.name = "Danny";
b.name = "Dog";
b.numLives--;


结语

** let vs. const **

现在我们有两种作用域相似的声明方式,我们自然会问到底应该使用哪个。 与大多数泛泛的问题一样,答案是:依情况而定。

使用最小特权原则,所有变量除了你计划去修改的都应该使用const。 基本原则就是如果一个变量不需要对它写入,那么其它使用这些代码的人也不能够写入它们,并且要思考为什么会需要对这些变量重新赋值。 使用 const也可以让我们更容易的推测数据的流动。

转载自:https://juejin.cn/post/7125609677689192461
评论
请登录