JS预解析与变量提升
2024-09-04 04:55:35
预解析
JavaScript代码的执行是由浏览器中的JavaScript解析器来执行的。JavaScript解析器执行JavaScript代码的时候,分为两个过程:预解析过程和代码执行过程
预解析过程:
把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。
先提升var,在提升function。
JavaScript的执行过程
// 案例1
var a = 25;
function abc() {
alert(a);
var a = 10;
}
abc();
// 案例2
console.log(a);
function a() {
console.log('aaaaa');
}
var a = 1;
console.log(a);
变量提升
变量提升
定义变量的时候,变量的声明会被提升到作用域的最上面,变量的赋值不会提升。
函数提升
JavaScript解析器首先会把当前作用域的函数声明提前到整个作用域的最前面
// 1、-----------------------------------
var num = 10;
fun();
function fun() {
console.log(num);
var num = 20;
}
//2、-----------------------------------
var a = 18;
f1();
function f1() {
var b = 9;
console.log(a);
console.log(b);
var a = '123';
}
// 3、-----------------------------------
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);
}
最新文章
- mysql安装时到最后start service时就不响应了的解决方法
- goldengate for big data 12.2.0.1.1新增功能
- Magento代码之订单创建流程
- java基础十二[集合与泛型](阅读Head First Java记录)
- :判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
- jdbc调用sparksql
- Android进阶笔记17:3种JSON解析工具(org.json、fastjson、gson)
- PYTHON设计模式,创建型之工厂方法模式
- HDU 4081 Qin Shi Huang's National Road System 最小生成树
- Trie的C++实现及HDU1251,hdu1671
- WCF 服务器已拒绝客户端凭据
- yii2 windows 安装
- JavaScript 伪造 Referer 来路方法
- JVM总结之命令行工具
- 新笔记tst
- RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用
- 初学Servlet之继承GenericServlet
- vue-router 路由跳转:和name配对的是params,和path配对的是query
- Linux下FastDFS分布式存储-总结及部署记录
- Leetcode 1013. 总持续时间可被 60 整除的歌曲