以下代碼片段顯示一個基本對象,其中包含變量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