这个es5代码用什么来模拟es6 const?
特别是评论没有意义,因为es5中没有块范围。
http://es6-features.org/#Constants
// only in ES5 through the help of object properties
// and only in global context and not in a block scope
Object.defineProperty(typeof global === "object" ? global : window, "PI", {
value: 3.141593,
enumerable: true,
writable: false,
configurable: false
})
PI > 3.0;
答案 0 :(得分:1)
typeof global === "object" ? global : window
这是说这个的快捷方式,(基本上)
var tmp;
if (typeof global === "object") {
tmp = global;
} else {
tmp = window;
}
Object.defineProperty(tmp, "PI",
由于没有窗口,因此运行JavaScript的环境(例如节点)没有window
属性。这允许您创建一个名为global
的全局变量,如果它存在,它将使用该变量。如果它不存在,则默认尝试window
。
然后它在名为PI
其他细节可在此处阅读:
答案 1 :(得分:1)
这个es5代码是什么
它创建一个只读的全局变量。
特别是评论没有意义,因为es5中没有块范围。
这些评论是为了明确指出我们与ES6 EditorTemplate
的差异:
const
环境,但无论如何都使用它)。 OTOH,with
适用于任何环境。const
不同,这样创建的变量不会被阻止作用域。换句话说,此代码尽可能接近const
功能。