【发布时间】:2021-04-09 11:16:20
【问题描述】:
class A {
flag = 0; // flag 1
constructor(timer) {
setTimeout(function() {
flag = 1; // flag 2
}, timer);
}
}
flag 2 指的是什么变量? flag 1 或 function() 内的本地标志?
我如何明确地引用它们中的任何一个?
【问题讨论】:
-
标志 1 和标志 2 是不同的变量。
flag不存在于setTimeout或constructor中,所以它应该抛出一个引用错误。 -
flag = 1这是一个全局变量。 -
@Keith 运行提供的代码时出现参考错误
-
@evolutionxbox 是的,在严格模式下它会。我相信大多数浏览器都会对一个类强制使用严格模式,但如果说使用了转译代码,它可能不会选择它,你会得到一个名为
flag的全局变量,其值为 1..
标签: javascript class variables scope