浅谈JavaScript代码预解析
栏目: JavaScript · 发布时间: 6年前
内容简介:最近与同学交流关于js代码预解析的问题,想想自己当时学的时候也没有太过注意这个事,所以特意研究了一下,如有不正确的地方敬请各位指教。为了便于理解,文中部分用可能不够准确,请大家多包涵。
最近与同学交流关于js代码预解析的问题,想想自己当时学的时候也没有太过注意这个事,所以特意研究了一下,如有不正确的地方敬请各位指教。为了便于理解,文中部分用可能不够准确,请大家多包涵。
知识点
-
var
声明的变量在预解析的时候只执行声明,不会执行定义,默认值是undefined
。 -
function
声明的函数在预解析的时候会提前声明并且会同时定义。 - 变量名重复声明无效
- 预解析过得代码不会再执行阶段执行
示例一
console.log(a); // 打印函数a函数体(function a() { console.log('a') }) var a = 10; console.log(a); // 10 function a() { console.log('a') } console.log(a); // 10 复制代码
预解析过程
-
首先预解析到有变量
a
存在,因此记录下a
这个名字,和其值undefined
-
接着预解析到有函数
a
声明,记录下函数名a
-
但是发现已经记录了一个
a
,因此该操作无效,将函数体与a
这个名字相关联 - 解析完毕
预解析过程代码
a = undefined a = function () { console.log('a') }
预解析结果
-
a = function () { console.log('a') }
执行过程
-
打印变量
a
的值function a() { console.log('a') }
-
变量
a
赋值为10,将原来关联的函数覆盖 -
打印变量
a
的值10
-
打印变量
a
的值10
- 执行完毕
执行过程代码
console.log(a) a = 10 console.log(a) console.log(a)
示例二
console.log(fn) // 函数fn函数体(function fn() { console.log(2) }) function fn() { console.log(1) } console.log(fn) // 函数fn函数体(function fn() { console.log(2) }) var fn = 10 console.log(fn) // 10 function fn() { console.log(2) } console.log(fn) // 10 复制代码
预解析过程
-
首先预解析到有函数
fn
声明,因此记录fn
这个名字,并关联其函数体 -
接着预解析到变量
fn
声明,记录下变量名fn
-
但是发现已经记录了一个
fn
,因此该操作无效 -
接着预解析到有函数
fn
声明,因此记录fn
这个名字 -
但是发现已经记录了一个
fn
,因此该操作无效,接着关联其函数体 - 解析完毕
预解析过程代码
fn = function () { console.log(1) } fn = function () { console.log(2) }
预解析结果
-
fn = function () { console.log(2) }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- PostgreSQL 字符编码相关代码解析
- PostgreSQL 环境变量相关代码解析
- Istio Pilot 代码深度解析
- Istio 服务注册插件机制代码解析
- Istio 服务注册插件机制代码解析
- ThreeJS的DeviceOrientationControls源代码解析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Iterative Methods for Sparse Linear Systems, Second Edition
Yousef Saad / Society for Industrial and Applied Mathematics / 2003-04-30 / USD 102.00
Tremendous progress has been made in the scientific and engineering disciplines regarding the use of iterative methods for linear systems. The size and complexity of linear and nonlinear systems arisi......一起来看看 《Iterative Methods for Sparse Linear Systems, Second Edition》 这本书的介绍吧!