gpt4 book ai didi

javascript - 函数声明后如何分配 JavaScript 变量?

转载 作者:行者123 更新时间:2023-12-03 09:40:33 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why does block assigned value change global variable? [duplicate]

(4 个回答)


1年前关闭。




下面的代码记录值 a作业后

var a = []
if (true) {
a = 1
function a() {}
a = 2
function a() {}
a = 3
console.log('0: ', a)
}
console.log('1: ', a)

我怀疑输出可能是:
0:  3
1: 3
但实际上上面的代码记录了
0:  3
1: 2
为什么?

最佳答案

我的理解是,有两个“a”变量。
一个是全局的,一个在括号范围内。
在第一次分配中,您将其分配给全局。
当您声明“a”函数时。它具有本地范围。
它将“a”中的当前值分配给全局值。
然后,当您再次为“a”分配一个值时,它会将其分配给本地范围变量。
出于某种原因,重新声明函数名称会使其将局部变量的值分配给全局变量。不知道为什么。

var a = [] // assigns to global

if (true) {
a = 1 // assigns to global
function a() {} // pushes value to global and creates a local "a" variable
a = 2 // assigns to local
function a() {} // pushes value to global
a = 3 // assigns to local
console.log('0: ', a) // outputs the local varaible
}
console.log('1: ', a) // outputs the last pushed global which is 2

关于javascript - 函数声明后如何分配 JavaScript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65104172/

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