预解析

JavaScript代码的执行是由浏览器中的JavaScript解析器来执行的。JavaScript解析器执行JavaScript代码的时候,分为两个过程:预解析过程和代码执行过程

预解析过程:

  1. 把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。

  2. 把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。

  3. 先提升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);
}

  

最新文章

  1. mysql安装时到最后start service时就不响应了的解决方法
  2. goldengate for big data 12.2.0.1.1新增功能
  3. Magento代码之订单创建流程
  4. java基础十二[集合与泛型](阅读Head First Java记录)
  5. :判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
  6. jdbc调用sparksql
  7. Android进阶笔记17:3种JSON解析工具(org.json、fastjson、gson)
  8. PYTHON设计模式,创建型之工厂方法模式
  9. HDU 4081 Qin Shi Huang's National Road System 最小生成树
  10. Trie的C++实现及HDU1251,hdu1671
  11. WCF 服务器已拒绝客户端凭据
  12. yii2 windows 安装
  13. JavaScript 伪造 Referer 来路方法
  14. JVM总结之命令行工具
  15. 新笔记tst
  16. RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用
  17. 初学Servlet之继承GenericServlet
  18. vue-router 路由跳转:和name配对的是params,和path配对的是query
  19. Linux下FastDFS分布式存储-总结及部署记录
  20. Leetcode 1013. 总持续时间可被 60 整除的歌曲

热门文章

  1. HTTP信息头处理器
  2. (Struts2学习系列四)Struts2指定配置文件
  3. mysql数据库 --数据类型、约束条件
  4. ubuntu QT安装以及配置交叉编译环境
  5. kubeadm部署一个Kubernetes集群
  6. Java集合中的Map接口怎么使用?
  7. Batch - %~dp0 modifiers
  8. MySql 字段类型对应 Java 实体类型
  9. 帝国cms把文章加入到收藏夹代码
  10. 依赖背包变形(经典)——poj1155