关于作用域链

发布于 2022-09-02 09:52:38 字数 347 浏览 17 评论 0

当代码在一个执行环境中执行时,会创建变量对象的一个作用域链。

var color="blue";
function changeColor(){

 if (color === "blue"){
     color="red";
    }else {color = "blue";}

}

changeColor();
alter(color);

这个例子里面,函数changeColor的作用域链包含两个对象:自己的变量对象 和全局环境的变量对象。

我想问到底是作用域包含变量对象还是变量对象里面有作用域呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你的他你的她 2022-09-09 09:52:39

其实这种变量的问题,是js的不好的地方,很不小心就赋值到全局变量了,最近的es6,解决了这个问题。也就是用let来声明变量,你可以了解一下,看他解决了什么问题,就知道现在变量声明的问题。

往事风中埋 2022-09-09 09:52:38

首先,这两者不是包含关系。。

作用域是一个范围。你上面那段代码,color是在全局作用域下定义的,所以在任何地方(包括在changeColor函数中)都能得到color的值。但如果你在changeColor函数内部使用var定义color,在函数外面是得不到color的值的(或者说得到的是undefined)。

在函数内部定义的变量,只能在函数内部得到它的值,这个范围,就是作用域。

慢慢来,看不懂就先放下看看其他的。我第一次看的时候也不懂。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文