以下代码片段显示一个基本对象,其中包含变量str
,成员变量hello
和成员函数test
。我以为我知道JS很好,并期望此代码失败,因为test
函数将被悬挂在顶部,并且将无法访问str
或vm
变量。然后我惊讶地发现这实际上起作用。为什么这个代码的功能?起吊是否仍然发生?JS提升功能。 (为什么此代码段工作?)
function SomeObject() {
var vm = this;
vm.hello = "hello";
vm.test = test;
var str = "testig!";
function test() {
console.log(vm.hello);
console.log(str);
}
}
var s = new SomeObject();
s.test();
输出:
hello
testig!
提升不影响范围... – elclanrs
总是发生提升 –
为什么它无法访问变量?它仍然在相同的范围内。 – Bergi