如果我有
Class Car {}
我需要包装那个函数闭包吗?var变量会提升到window对象还是只在类中生效?当进行转译时呢?Traceur/babel会将其转换为IIFE并赋值给var变量吗?
我需要:
(function(){
Class Car() {}
}());
要保持安全?
如果我有
Class Car {}
我需要包装那个函数闭包吗?var变量会提升到window对象还是只在类中生效?当进行转译时呢?Traceur/babel会将其转换为IIFE并赋值给var变量吗?
我需要:
(function(){
Class Car() {}
}());
这里展示的class car不需要使用IIFE包装器,事实上这会创建一个执行上下文并将该类隐藏在页面的其余部分中。
因此,您只需将其保留为(class car)即可(不是小写)。
class Car(){}
变量仍然像以前一样被提升。它将被提升到执行上下文的顶部。如果代码当前在窗口上下文中,则变量将在那里结束。
在ECMAScript 6中,类不会被提升。因此,只有在声明后才能使用该类。
let
。 - Felix Klingvar Class
,否则不需要使用IIFE。生成的变量会像任何变量一样被提升:声明会在开头进行,但赋值会在原始行中进行。let
转换为var
,但它还会处理额外的赋值以使作用域按预期工作。如果你只想编写ES6代码并执行它,就不必担心这些细节,只需遵循ES6(ES2015)标准即可。let
转换为var
。http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-of-ecmascript
你的意思是什么?
var变量是否会被提升到[...]类中?
car.js
文件和一个使用该类的new-car.js
文件,但如果我将Car
记录到控制台中,它会显示构造函数,但如果我将window.Car
记录到控制台中,它会显示undefined
。 - Buzinasclass
,let
和const
)不会成为全局对象的属性。 - Felix Kling