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

标签: none

添加新评论