Javascript的作用域是什么_全局和局部作用域如何理解?

JavaScript作用域是变量和函数可访问的范围,分为全局、函数和块级三种;全局变量在脚本顶层声明,函数作用域由var定义,块级作用域由let/const在{}中定义;作用域链支持内层访问外层变量。

javascript的作用域是什么_全局和局部作用域如何理解?

JavaScript 的作用域,简单说就是变量和函数能被访问的“地盘”。它不是运行时才决定的,而是在代码写好、函数定义那一刻就固定下来的(这叫词法作用域)。理解作用域,关键看变量在哪声明、用什么关键字声明、以及被包裹在什么结构里。

全局作用域:整个脚本都认得它

标签最外层、或独立 .js 文件的顶层直接声明的变量(比如用 varletconst),就属于全局作用域。它们可以在任何地方被读取(除非被同名局部变量遮蔽)。

var a = 10;let b = 20; 写在函数外面 → 全局可访问 函数内部没声明就直接赋值,如 c = 30; → 自动挂到 window浏览器)或 global(Node.js)上,也变成全局(但强烈不推荐) 全局变量生命周期贯穿整个页面/进程,容易造成命名污染和意外覆盖

函数作用域:函数内部自成一派

在函数体内用 var 声明的变量,只在该函数内有效;函数执行完,这个作用域通常就销毁了(闭包例外)。

不同函数之间的 var 变量互不可见,哪怕名字一样 函数内可以访问外部(包括全局)的变量,但外部看不到函数内的 var function fn() { var x = 5; }xfn 外调用会报 ReferenceError

块级作用域:ES6 起由 letconst 划出的小圈子

{} 包裹的代码块(如 iffor、纯 {})中,用 letconst 声明的变量,只在该块内有效。

立即学习“Java免费学习笔记(深入)”;

if (true) { let y = 100; }yif 外无法访问 var 在块中声明仍属于函数或全局作用域,不会产生块级限制 同一块内重复用 let 声明同名变量会报错,var 则允许(只是覆盖)

作用域链:一层层往上找变量的路线图

当访问一个变量时,JS 引擎先在当前作用域找;找不到就往它的外层作用域找,一直追到全局作用域为止。这就是作用域链。

内层函数可以访问外层函数的变量(闭包的基础) 但外层函数永远访问不到内层函数用 letvar 声明的变量 如果内外层有同名变量,就近原则:当前作用域的变量会“遮蔽”外层的同名变量

以上就是Javascript的作用域是什么_全局和局部作用域如何理解?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1543819.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 15:22:26
下一篇 2025年12月21日 15:22:39

相关推荐

发表回复

登录后才能评论
关注微信