gpt4 book ai didi

javascript - JS 提升功能。 (为什么这个代码片段有效?)

转载 作者:行者123 更新时间:2023-12-02 14:56:33 25 4
gpt4 key购买 nike

以下代码片段显示了一个包含变量 str 的基本对象,成员变量hello ,以及一个成员函数 test 。我以为我很了解 JS,并预计这段代码会失败,因为 test函数将被提升到顶部并且无法访问 strvm多变的。然后我惊讶地发现这确实有效。这段代码为什么能起作用?吊装还会发生吗?

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!

最佳答案

由于提升,你最终会得到这样的结果:

function SomeObject() {
var vm;
var str;
var test;
test = function test() {
console.log(vm.hello);
console.log(str); // Works because we haven't run the function yet
}

vm = this;
vm.hello = 'hello';
vm.test = test;
str = 'testig'; // str now has a value, function hasn't been called yet
}

var s = new SomeObject();
s.test(); // Function is called after str has been given a value

关于javascript - JS 提升功能。 (为什么这个代码片段有效?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35760446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com