js作用域链与预解析
JS 解析 作用域
2023-06-13 09:16:40 时间
1. 作用域
1.1 全局作用域
在script标签下直接声明的变量或函数,都会在全局作用域下。可以在程序任何地方拿到
1 <script>
2 var a = "全局变量a"
3 let b = "全局变量b"
4 const c = "全局变量c"
5 </script>
1.2 函数作用域
也叫局部作用域,如果一个变量是在函数内部声明的,它就处于函数作用域。这些变量只能在函数内部访问,不能在函数以外去访问。
(函数执行完内部变量就会被js销毁,除非使用闭包)
1function aaa(params) {
2 var bb = "bb";
3}
4
5console.log(bb);//bb is not defined
1.3 块级作用域
只适用于let、const,被这俩关键字定义的变量会产生块级作用域。 大括号之外不能访问,比如if、for循环...
1if (true) {
2 var a = "a";
3 let b = "b";
4 const c = "c";
5}
6
7console.log(a);//"a"
8console.log(b);//b is not defined
9console.log(c);//c is not defined
10
1.4 作用域链
在使用一个变量的时候,首先js会先在当前作用域下去寻找该变量,如果没找到,再到它的上层作用域寻找,以此类推直到找到该变量或是已经到了全局作用域。
1var bb = "bb"; //在这层找到了
2
3(function aaa() {
4 //当前作用域没有,向上层查找
5 console.log(bb);
6})(); //bb
2. 预解析
js运行分为两步:预解析,代码执行
- 预解析:var声明的变量(不赋值)和函数,会被提升到当前作用域最前面
- 代码执行:按照代码书写的顺序从上往下执行
预解析优先级:
函数>变量
因为函数提升是整体提升,变量提升不会被赋值,而是执行到那一步才赋值
相关文章
- 个人总结 – JS逆向解析[通俗易懂]
- html js 全局 变量,JS定义全局变量
- html如何只刷新页面指定,js控制页面刷新 JS刷新当前页面的几种方法总结
- javaScript学习笔记(一)js基础
- js面试笔试–prototype详解
- js 数组去除重复数据-5 个提升你 JS 编码水平的实例
- clipboard.js:最轻便的复制页面内容到剪切板的JS
- Js解析Json字符串详解编程语言
- 创建JS文件:在Linux下实现自动化任务(linux创建js文件)
- Linux上的JS压缩工具(js压缩工具linux)
- 利用 JS 实现 Redis 的连接(js连接redis)
- 使用JS控制Oracle数据库的更新(js控制oracle更新)
- 一些有关检查数据的JS代码
- JS类中定义原型方法的两种实现的区别
- JS提交并解析后台返回的XML的代码
- js操作table之移动TR位置兼容FF跟IE
- 如何写JS数组sort的比较函数
- CSS和JS标签style属性对照表(方便js开发的朋友)
- JS获取网址中指定值的正则函数
- Base64编码加密JS代码网页版
- 使用非html5实现js板连连看游戏示例代码
- 常用js字符串判断方法整理
- js中apply方法的使用详细解析
- js事件截取enter按键页面提交事件示例代码
- JS对文本框值的判断示例