TypeScript 变量作用域

变量的作用域是指变量有效性的范围,就是用户自定义的变量可以使用的代码范围,它与变量定义的位置密切相关。

TypeScript有以下几种作用域:全局作用域、局部作用域、类作用域。

全局作用域

全局变量可以在你代码的任何位置使用。

局部作用域

局部变量只能在声明它的一个代码块或者方法中使用。

类作用域

这个变量也可以称为“类变量”或者“对象变量”。需要注意的是,两者有明显的区别:类变量也叫静态变量,也就是在变量前加了static的变量;对象变量也叫实例变量,即没加static的变量。类变量和对象变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而对象变量则属对象私有,某一个对象将其值改变,不影响其他对象。

举例说明

以下实例说明了三种作用域的使用:

var global_num = 12          // 全局变量
class Numbers { 
   object_num = 13;             // 实例变量
   static static_num = 10;      // 静态变量
   
   storeNum():void { 
      var local_num = 14;    // 局部变量
   } 
} 
console.log("全局变量为: " + global_num)  
console.log("静态变量为: " + Numbers.static_num )
var obj = new Numbers(); 
console.log("实例变量: "+obj.object_num)

以上代码使用 tsc 命令编译为 JavaScript 代码为:

var global_num = 12; // 全局变量
var Numbers = /** @class */ (function () {
    function Numbers() {
        this.object_num = 13; // 实例变量
    }
    Numbers.prototype.storeNum = function () {
        var local_num = 14; // 局部变量
    };
    Numbers.static_num = 10; // 静态变量
    return Numbers;
}());
console.log("全局变量为: " + global_num);
console.log("静态变量为: " + Numbers.static_num);
var obj = new Numbers();
console.log("实例变量: " + obj.object_num);

执行以上 JavaScript 代码,输出结果为:

全局变量为: 12
静态变量为: 10
实例变量: 13

如果我们在方法外部调用局部变量 local_num,会报错:

error TS2322: Could not find symbol 'local_num'.

原文链接:http://www.mybatis.cn/typescript/1979.html