目录

1.js引擎运行js分为两步:预解析 代码执行

2.预解析分为 变量预解析 和 函数预解析

3.用代码解释js预解析

4.经典案例


1.js引擎运行js分为两步:预解析 代码执行

JavaScript 是 轻量级 解释型 弱类型 脚本语言

所谓的 预解析/预解释/预编译 是 JavaScript程序的一种执行方式

预解析:js引擎会把 js 里面所有的 var function 提升到当前作用域的最前面

代码执行:按照代码书写的顺序从上往下执行

2.预解析分为 变量预解析 和 函数预解析

变量预解析 也叫 变量提升

就是把所有的变量声明提升到当前作用域的最前面,但不提升赋值操作

函数预解析 也叫 函数提升

就是把所有的函数声明提升到当前作用域的最前面,但不调用函数

3.用代码解释js预解析

console.log(num); //执行结果:undefined
var num = 16;//是因为预解析后,相当于 执行了以下代码var num;//变量提升
console.log();
num = 10;
fn(); // 输出结果:18
function fn(){console.log(18);
}//预解析后,相当于执行了以下代码
function fn() {//函数提升console.log(18);
}
fn();//这也就解释了 声明式函数 在 调用函数时 fn() 既可以放在函数的下面,也可以放在函数的上面
fn(); //直接会报错
var fun = function() { //赋值式函数无法进行函数提升console.log(20);
}//预解析后,相当于执行了以下代码var fn;//变量提升
fn();
fn = function() { console.log(20);
}

4.经典案例

fn();
console.log(c);
console.log(b);
console.log(a);
function fn() {//注意一个点//var a = b = c = 22; 相当于var a = 22; b = 22; c = 22;//可不是 var a = 22; var b = 22; var c = 22;想要是这样的,可以是:var a,b,c = 22;var a = b = c = 22; console.log(a);console.log(b);console.log(c);
}//预解析后,相当于执行了以下代码function fn() {var a;a = 22;//b和c直接赋值 没有var声明,相当于是全局变量  b = 22;c = 22;console.log(a); //22console.log(b); //22console.log(c); //22
}
fn();
console.log(c); //22
console.log(b); //22
console.log(a); //undefined

JavaScript预解析相关推荐

  1. JavaScript预解析、作用域题目记录

    JavaScript预解析.作用域题目记录 写出以下题目执行的结果及过程分析 function fun ( n ) {console.log( n );var n = 456;console.log( ...

  2. JavaScript(三)—— JavaScript 函数/JavaScript 作用域/JavaScript 预解析/JavaScript 对象

    本篇为 JavaScript 系列笔记第三篇,将陆续更新 JavaScript(一)-- 初识JavaScript/注释/输入输出语句/变量/数据类型 JavaScript(二)-- JavaScri ...

  3. JavaScript 预解析机制

    JavaScript预解析 文章目录 JavaScript预解析 JS预解析? 一.预解析受体 二.对var的预解析 三.对function的预解析 四.var在作用域内 五.function作参.在 ...

  4. Javascript预解析、作用域、作用域链

    最近在看js的一些资料,总结一下昨晚看到的js作用域方面的知识,不准确的地方希望留言指正! 先看片段js代码如下: 1 < script type="text/javascript&q ...

  5. JavaScript 预解析、对象、错误

    单线程 记住一句话:JavaScript语言是单线程的 区分线程和进程 进程是一个工厂,工厂有它的独立资源-工厂之间相互独立-线程是工厂中的工人,多个工人协作完成任务-工厂内有一个或多个工人-工人之间 ...

  6. Javascript预解析、代码执行

    1.js引擎分为两部 :预解析 代码执行 预解析js引擎会把 js 里面所有的 var 还有 function 提升到当前作用域的最前面 代码执行 按照代码书写的顺序从上往下执行 2.预解析分为 变量 ...

  7. JavaScript ( 预解析 )

    <script> // 预解析:教如何看懂代码的执行过程 // js的执行过程: /* 1.解析 - 预解析 2.执行 - 然后,代码按照预解析的结果顺序执行 */ // 预解析具体在做什 ...

  8. JavaScript预解析详解

    JS预解析 JS解析器在运行JS代码时分两步: 预解析和代码执行 预解析 JS引擎会把JS里面所有 var 和 function 提升到当前作用域的最前面 代码执行时, 按照代码书写的顺序从上往下执行 ...

  9. 轻松搞定javascript预解析机制(搞定后,一切有关变态面试题都是浮云~~)

    hey,guys!我们一起总结一下JS预解析吧! 首先,我们得搞清楚JS预解析和JS逐行执行的关系.其实它们两并不冲突,一个例子轻松理解它们的关系: 你去酒店吃饭,吃饭前你得看下菜谱,点下菜(JS预解 ...

  10. 前端学习(756):javascript预解析

最新文章

  1. 算法和编程面试题精选TOP50!(附代码+解题思路+答案)
  2. 【Perl】二维数组
  3. UA MATH571A 回归分析 概念与R code总结
  4. java dictionary 实例化_Java Dictionary put()用法及代码示例
  5. 8、web入门回顾/ Http
  6. 网络工程师历年试题解析(PDF文字版)2004-2009
  7. nginx 源码调试
  8. springboot 读取配置文件_使用 @ConfigurationProperties 在 Spring Boot 中加载配置
  9. 把strassen乘法调出来了...
  10. 各种各种的公共工具类
  11. rails i18n模型_Rails国际化的完整指南(i18n)
  12. Python调用(运行)外部程序参数问题
  13. 没有下班时间的上班怎么办?
  14. 给BERT加一个loss就能稳定提升?斯坦福+Facebook最新力作!
  15. linux bash 逻辑,Bash 中的逻辑和() | Linux 中国
  16. 生成交叉表的SQL基本语句
  17. qqkey获取原理_QQ key盗号木马原理分析
  18. 雅思c1语言等级,雅思分数各代表什么水平
  19. 世界顶级职场中,为什么印度人可以做到CEO,中国人却最多只是架构师?
  20. 2021年注册土木工程师岩土基础考试历年真题

热门文章

  1. AutoIT:界面与自动化操作结合来简化日常劳动: .Net Reactor验证License,设置License,创建License,截图AutoIt自动化实现。(七)...
  2. Python开发-Django表单
  3. iOS开发中配置开发者中心证书
  4. OpenCASCADE:OCCT WebGL 查看器示例
  5. SEO优化-SEO具体方法,SEO干货分享
  6. word分栏对齐方法
  7. 162手写板合封芯片专用IC输出可达50V外围简单SOP8封装
  8. 用二分法求下面方程在(-10,10)之间的根:2x^3-4x^2+3x-6=0
  9. 单片机---HLK-W801移植Nes模拟器(三)
  10. 电脑网络没有问题,就是电脑连不上网的解决办法