gpt4 book ai didi

函数混淆中的javascript变量范围

转载 作者:数据小太阳 更新时间:2023-10-29 05:48:09 24 4
gpt4 key购买 nike

这里有 2 个 javascript 函数

var a = 10;
function abcd()
{
alert(a);//alerts 10
a=5;
}

另一个代码是这个

var a = 10;
function abcd()
{
alert(a);//alerts undefined
var a=5;
}

在这两个函数中,赋值/声明都在 alert() 调用之后。那为什么提示信息分别是10undefined呢?

最佳答案

那是因为你的变量得到 "hoisted" up of its containing scope在您声明时由口译员提供。所以你的代码最终被解释成这样:

function abcd()
{
var a;
alert(a); //alerts undefined
a = 5;
}

为了避免这种混淆,您可以遵循一些保持原样的做法,例如声明您的局部作用域(即,在函数作用域内使用关键字 var 声明的变量)函数开头的变量。

请注意,正如您从文章中所读到的,嵌套函数也会发生这种情况。

关于函数混淆中的javascript变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22308379/

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