我不知道的冷知识点(一)

257 阅读1分钟

最近在学习Typescript发现一个有趣的事情

    //声明一个枚举类型的数据类型
    enum Color { red, green, blue };
    console.log(Color);
    let c: Color = Color.green;
    // 然后tsc 编译,以下是编译后的js代码
    var Color;
    (function (Color) {
        Color[Color["red"] = 0] = "red";
        Color[Color["green"] = 1] = "green";
        Color[Color["blue"] = 2] = "blue";
    })(Color || (Color = {}));
    ;
    console.log(Color); {0: "red", 1: "green", 2: "blue", red: 0, green: 1, blue: 2}
    var c = Color.green; // 返回值是 undefined
  • 注意这行代码 Color[Color["red"] = 0] = "red"; 巧妙的运用了 对象属性赋值 返回 属性的值 (数组也是对象),这里做了两次赋值,第一次Color["red"]=0,返回值是0,然后Color[0] = "red";

总结

  • var、let、const定义一个变量或常量,赋值成功返回结果是 undefined,没有赋值成功会报错。
  • 进行对象属性,数组元素赋值时 返回的是对象属性、数组元素的 赋值成功后的值