String(a=1) 的值是多少?

在 TypeScript 中有个比较有意思的类型叫作枚举,使用枚举类型能够为一组数值赋予友好的名字。最多见的就是好比说周一到周日,就能够用枚举表示。code

官网用了一个小例子说明:对象

enum Color {Red, Green, Blue}
let c: Color = Color.Green;

这个转化成 js 就是ip

var Color;
(function (Color) {
    Color[Color["Red"] = 0] = "Red";
    Color[Color["Green"] = 1] = "Green";
    Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));
var c = Color.Green;
// Color = {0: "Red", 1: "Green", 2: "Blue", Red: 0, Green: 1, Blue: 2}

仔细看中间的代码会发现有个 Color[Color["Red"] = 0] = "Red"; 的表示方法,这个是什么鬼?io

咱们知道对象在属性是 String 类型的,因此我猜想也就是使用了 String() 对中间的表达式进行了类型转化,咱们在控制台能够简单的输入 String(Color["Red"] = 0),返回的结果为0。function

其实这个就是基本的 js 运算规则,若是你理解下面的代码,你也就理解了为何返回 0 了。方法

var a = b = 0
// a=0
// b=0

我想这个大多数人都能看懂,不过若是咱们变更一下。co

'use strict'
var a = b =0

那么这个就会报错,由于 b 没有使用 var 进行声明,这个就是 JS 运算规则中叫作“右结合”,上述代码正确的理解方式就是:let

var a = ( b = 0 );

哈哈,我想你应该知道了,因此 String(Color["Red"] = 0) 的正确理解方式就是枚举

var tmp = Color["red"] = 0;
String(tmp);
相关文章
相关标签/搜索