Flo*_*ond 17 javascript typescript
考虑:
enum Colors {
Red,
Green,
Blue
}
Run Code Online (Sandbox Code Playgroud)
它转化为:
var Colors;
(function (Colors) {
Colors[Colors["Red"] = 0] = "Red";
Colors[Colors["Green"] = 1] = "Green";
Colors[Colors["Blue"] = 2] = "Blue";
})(Colors || (Colors = {}));
Run Code Online (Sandbox Code Playgroud)
有关此结果的大多数问题都在TypeScript中的Enums中得到解答:JavaScript代码在做什么?.
我引用答案:
这是一个'立即执行的功能'
更进一步的话题:
认为他们可能会去:
Run Code Online (Sandbox Code Playgroud)var Colors; Colors || (Colors = {}); Colors[Colors["Cyan"] = 3] = "Cyan"; // ...并跳过关闭,但也许我仍然缺少一些东西.
所以问题仍然存在:为什么将它包装在一个立即执行的函数中?
An0*_*0us 10
我相信TypeScript使用IIFE(也称为立即调用的函数表达式),因为变量名称可以缩小.如果你有很长的枚举名称,例如MySuperAmazingStatesNeededForWhateverIWantEnum,它可以在IIFE中缩小到只有一个字母
// amazing_enum.js
var MySuperAmazingStatesNeededForWhateverIWantEnum;
(function MySuperAmazingStatesNeededForWhateverIWantEnum() {
MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum["Red"] = 0] = "Red";
MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum["Green"] = 1] = "Green";
MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum["Blue"] = 2] = "Blue";
})(MySuperAmazingStatesNeededForWhateverIWantEnum || (MySuperAmazingStatesNeededForWhateverIWantEnum = {}));
// amazing_enum.min.js
var MySuperAmazingStatesNeededForWhateverIWantEnum;!function e(){e[e.t=0]="Red",e[e.u=1]="Green",e[e.m=2]="Blue"}(MySuperAmazingStatesNeededForWhateverIWantEnum||(MySuperAmazingStatesNeededForWhateverIWantEnum={}));
Run Code Online (Sandbox Code Playgroud)
如果没有IIFE,缩小就不会那么有效
// amazing_enum.js
var MySuperAmazingStatesNeededForWhateverIWantEnum;
MySuperAmazingStatesNeededForWhateverIWantEnum || (MySuperAmazingStatesNeededForWhateverIWantEnum = {}),
MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum.Red = 0] = "Red";
MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum.Green = 1] = "Green";
MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum.Blue = 2] = "Blue";
// amazing_enum.min.js
var MySuperAmazingStatesNeededForWhateverIWantEnum;MySuperAmazingStatesNeededForWhateverIWantEnum||(MySuperAmazingStatesNeededForWhateverIWantEnum={}),MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum.t=0]="Red",MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum.u=1]="Green",MySuperAmazingStatesNeededForWhateverIWantEnum[MySuperAmazingStatesNeededForWhateverIWantEnum.m=2]="Blue";
Run Code Online (Sandbox Code Playgroud)
尺寸差异很大.
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |