为了账号安全,请及时绑定邮箱和手机立即绑定

请问javascript中变量阴影的一个例子

请问javascript中变量阴影的一个例子

慕码人2483693 2019-12-02 08:04:13
javascript中变量阴影的一个例子我在Eloquent Javascript(第3章)中学习了变量阴影这个术语,但我试图理解这个概念的一个精确的基本例子。这是阴影的一个例子吗?var currencySymbol = "$";function showMoney(amount) {   var currencySymbol = "€";   document.write(currencySymbol + amount);}showMoney("100");
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

这也就是所谓的变量范围。

变量仅存在于其包含的函数/方法/类中,并且这些变量将覆盖属于更宽范围的任何变量。

这就是为什么在你的例子中,将显示一个欧元符号,而不是一美元。(因为currencySymbol包含美元的范围比currencySymbol包含欧元符号的范围更宽(全局)。

至于你的具体问题:是的,这是变量阴影的一个很好的例子。


查看完整回答
反对 回复 2019-12-03
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

在计算机编程中,当在特定范围内声明的变量(决策块,方法或内部类)与在外部范围中声明的变量具有相同的名称时,会发生变量阴影。这个外部变量据说被遮蔽了......

所以我相信你的榜样很好。

你有一个全局命名变量,它与内部方法共享同一个名称。内部变量将仅用于该函数。没有该变量声明的其他函数将使用全局函数。



查看完整回答
反对 回复 2019-12-03
?
慕斯王

TA贡献1864条经验 获得超2个赞

是的,你的例子是阴影的一个例子。


由于JavaScript中的闭包工作方式,阴影将在其他场景中持续存在。这是一个例子:


var x = -1;

function xCounter() {

    var x = 0;

    return function() {

        ++x;

        return x;

    };

}


console.log(x);   // -1

counter = xCounter();

console.log(counter());   // 1

console.log(counter());   // 2

console.log(x);   // still -1, global was never touched

请注意,在这种情况下,即使xCounter返回,它返回的函数仍然具有对它自己的引用,x并且该内部函数的调用对全局没有影响,即使原始版本已经超出范围。



查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 287 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号