以下是TypeScript:
enum PrimaryColors { Red, Green, Blue };
产生以下JavaScript:
var PrimaryColors;
(function (PrimaryColors) {
PrimaryColors[PrimaryColors["Red"] = 0] = "Red";
PrimaryColors[PrimaryColors["Green"] = 1] = "Green";
PrimaryColors[PrimaryColors["Blue"] = 2] = "Blue";
})(PrimaryColors || (PrimaryColors = {}));
;
我很尴尬地承认我不了解JavaScript在做什么。
括号中的函数是使用另一个分配作为索引/键来分配字符串值。我以前从未见过这样的东西。
函数后面的(PrimaryColors ||(PrimaryColors = {})的目的是什么?
如果答案是正确学习JavaScript,我将很乐意接受它,只要它带有建议的来源,可以清楚地说明我在这里看到的内容。
最佳答案
我相信:
PrimaryColors[PrimaryColors["Red"] = 0] = "Red";
等效于:
PrimaryColors[0] = "Red";
PrimaryColors["Red"] = 0;
看到这个reference。
例如:
console.log((x = 7));
输出:
7
类似地:
var x = {};
console.log((x["hi"] = 7));
也输出7。
至于第二件事,
PrimaryColors
最初是未定义的。var x;
console.log(x); // undefined
在 bool(boolean) 上下文中,
undefined
的计算结果为false
:console.log(!undefined); // true
console.log(!!undefined); // false
完整性检查:
console.log((!undefined) === true); // true
console.log((!!undefined) === false); // true
console.log(undefined === false); // false
这是短路的常见用法。因为
PrimaryColors
最初是未定义的(false),所以它将{}
传递给函数。PrimaryColors || (PrimaryColors = {})
关于javascript - TypeScript中的枚举:JavaScript代码在做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20278095/