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);
相關文章
相關標籤/搜索