我尝试理解为什么当用 var 声明权限时变量“Permissions”将是“function”类型,而用 let 声明时变量“Permissions”将是“object”类型(这是例外行为)
使用 'var' - 权限是 'function' 类型
var Permissions;
(function (Permissions) {
Permissions[Permissions["ADMIN"] = 0] = "ADMIN";
Permissions[Permissions["READ_ONLY"] = 1] = "READ_ONLY";
})(Permissions || (Permissions = {}));
使用 'let' - 权限是 'object' 类型
let Permissions;
(function (Permissions) {
Permissions[Permissions["ADMIN"] = 0] = "ADMIN";
Permissions[Permissions["READ_ONLY"] = 1] = "READ_ONLY";
})(Permissions || (Permissions = {}));
我将这两种情况都排除为“对象”。为什么使用“var”权限是“function”类型?
在全局范围内使用
var
声明变量会使其成为 window
的属性。
由于您尚未初始化它,因此它实际上指向现有的 window.Permissions
属性。
let
工作方式不同,并在当前作用域中声明一个单独的变量:
console.log(Permissions);