javascript作用域链

javascript作用域链定义作用域的集合就是作用域链 1 函数在执行的过程中 先从自己内部寻找变量 2 如果找不到 再从创建当前函数所在的作用域去找 从此往上 也就是向上一级找 当在作用域内访问变量 方法的时候 会找离自己最近的那个变量 方法 就近原则

作用域链

JavaScript中,函数也是对象,实际上,JavaScript里一切都是对象。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是[[Scope]],该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。

作用域链决定了哪些数据能被函数访问。当一个函数创建后,它的作用域链会被创建此函数的作用域中可访问的数据对象填充。

function fn(){ var a=10; function fn1(){ var b=20; alert(a) //10 function fn2(){ alert(b) //20 alert(a) //10 子集可以跨级访问父级 } fn2() } fn1() } fn() alert(b) // 报错 

从作用域链的结构可以看出,函数在执行的过程中,先从自己内部寻找变量,如果找不到,再从创建当前函数所在的作用域去找,从此往上,也就是向上一级找,直到找到全局作用域还是没找到。

执行顺序

var a=10; function fn(){ var a=20; console.log(a) //20 } fn() 

总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232064.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月4日 上午11:01
下一篇 2025年11月4日 上午11:22


相关推荐

  • ubuntu18.04更新内核_如何查看linux系统内核版本

    ubuntu18.04更新内核_如何查看linux系统内核版本1.查看内核版本2.修改apt源编辑在尾部增加一行/etc/apt/sources.listdebhttp://security.ubuntu.com/ubuntutrusty-securitymain更新apt-getupdate3.查看可更新的内核apt-cachesearchlinux-imageapt-cachesearchlinux|greplinux-headers本次我们更新4.15aptinst…

    2022年8月23日
    8
  • Feign使用方法

    Feign使用方法什么是 FeignFeign 是微服务架构中的一种服务调用方式 通过声明方式进行微服务调用 Feign 可以帮助我们更加便捷编写接口 Feign 的使用由三个部分组成 服务提供者 服务消费者 Feign 客户端服务提供者 服务接口 接口定义需要加上 RequestMappi 注解 publicinterf

    2026年3月18日
    2
  • js模块化html,js模块化和使用

    js模块化html,js模块化和使用很久以前就知道 js 模块化开发可以使用 require js 和 sea js 就一直没去看看 最近在了解查看的 度一下 require js 相关的博客和文章 写得真是操蛋的疼 都是互相抄来抄去 博主应该都没有自己实际去敲过 哪怕给我写一个完整的简单应用示例我都可以上手 结果把自己折腾得 后面也看来 sea js 简单明了 上手容易多 主要是别人写的博客文档好 什么是模块化关于这个概念还是推荐阅读

    2026年3月18日
    2
  • cacls.exe「建议收藏」

    cacls.exe「建议收藏」xpsql.cpp:错误5来自CreateProcess(第737行)怎么解决、很简单的解决方法cmd权限问题cacls.exeC:\WINdows\system32\cmd.exe/e/t/gsystem:FC:\DocumentsandSettings\Administrator>cacls.exeC:\WINdows\system32\cmd.exe…

    2025年6月13日
    5
  • gb28181协议详解_GB28181收费吗

    gb28181协议详解_GB28181收费吗ssdp协议近似于http协议,事实上,和http协议相似得地方就是他得协议内容,当然,我们要去除他得端口和d类地址。为什么我在给其他员工或者面试得时候要他人深入一些,理解一下http协议,是因为理解了http协议,掌握ssdp也就不远了,很多人可能会问http协议有啥内容,无非就是get,post,put,delete么,还能怎么样,我经常问他们一点http协议怎么知道他结束了?虽然ssdp是udp协议,但是他依然需要\r\n来代表行结束,\r\n\r\n代表协议内容部分结束。……

    2022年10月11日
    3
  • OpenClaw 如何快速上手

    OpenClaw 如何快速上手

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号