关于js中的作用域
js中的作用域 :代码变量的作用范围
分为全局作用域和局部作用域:
全局作用域:直接编写在两个<script>标签之间 :
<script>
var num=95; //全局变量
console.log(num);
</script>
局部作用域(也可以称为函数作用域 :
function fun(){ var num=95;//局部变量 } console.log(num);
这两个的作用域的效率相比 :
全局变量只有浏览器关闭的时候才会销毁,比较占内存资源
局部变量 当我们程序执行完毕就会销毁 比较省内存资源
需要注意的几个点是:
如果在函数内部 没有声明直接赋值的变量也属于全局变量(不过这种写法不建议大家取用 如下:
function fun(){ var num1=10; num2=20;//是全局变量 }
fun(); console.log(num2);//输出结果不是undefiened 而是20
关于块级作用域:
js是一个比较自由的语言
在es5中是没有块级作用域的这个说法的
es6中 已经新增了块级作用域
关于块级作用域 举个例子:
在java 中 在块级作用域中声明一个变量 外部是不能调用num的:
if(...){ int num=1; }
还有这里要提一下作用域链
大家写代码的时候会发现 如果声明变量冲突 会不知道最后执行哪一个
自然 执行的时候会有一套自己的顺序 这个就被称为作用域链
function fun(){ var num=10; function Num(){ var num=20; console.log(num); }
Num(); }
fun();
//最后会执行子级函数中的变量 输出20
因为采取的是链式查找的方式来决取这个值 这种结构被称为作用域链 (一级一级向上寻找
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?