gpt4 book ai didi

JavaScript 提升

转载 作者:行者123 更新时间:2023-12-02 15:20:41 24 4
gpt4 key购买 nike

我正在学习javascript提升功能,发现下面的代码真的很困惑:

var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);

输出为1。据我所知,由于提升,上面的代码相当于

var a;
function b() {
function a() {}
a=10;
return;
}
a=1;
b();
alert(a);

函数变量具有相同名称a时会发生什么?

最佳答案

当函数和变量同名 a 时会发生什么?

没什么特别的。对 a 的一个赋值会覆盖另一个,因为它们都是值。

console.log(a) // a points to a function here
var a = 4
console.log(a) // a points to 4 here
function a() {}
console.log(a) // a also points to 4 here!

顺便说一句,如果变量不是函数的本地变量,则函数外部作用域中的变量只能由该函数修改。

var a = 4
;(function() {
a = 5
})() // <-- Immediately calling the function here
console.log(a) // a is now 5
;(function() {
a = 6
var a
})()
// a is still 5 because in the previous function,
// a was local to the function's scope
console.log(a)

函数参数对于变量来说是隐式的本地参数,因此它们会自动“隐藏”共享相同名称的全局变量。

关于JavaScript 提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34112768/

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