當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
一段代码看出JS的的解析到执行的顺序规则
生活随笔
收集整理的這篇文章主要介紹了
一段代码看出JS的的解析到执行的顺序规则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一段代碼看出JS的的解析到執行的順序規則
代碼
function bar(a, b) {b = 3;var b;function b(){}console.log(a); // 打印出:10console.log(b); // 打印出:3return function a(){}; }bar(10);執行順序
函數外面的時候,代碼拆成前后兩部分來看:
第 1 部分:(申明)
- 1、申明了一個bar=undefined的函數變量,用代碼可以看成:(VO是執行上下文,可以看成是this
)
VO = {bar:undefined}第 2 部分:(執行)
- 2、執行bar(10)這里由于是函數,存在獨立作用域,只要存在作用域就先解析,所以這里又可以拆成兩部分來看:
第 2.1 部分:(申明)
- 先聲明a=10,b=undefined兩個形參變量,再申明函數變量b=function b(){},由于上下文VO1中已經存在 b 了,所以會覆蓋掉形參b的申明,然后再申明var變量b=undefined,并覆蓋已經存在VO1中函數變量b,用代碼表示:
注意:這里需要注意的是函數表達式return function a(){}并不會提前申明,函數表達式和函數申明的異同是,除了標準的函數申明:function a(){},其他的都是函數表達式,如:var a = function (){}、(function a(){})...等。
注意:申明的權重:argument(函數的形參申明) > function聲明 > var聲明 (也就之前提高的變量提升Hoisting)
第 2.2 部分:(執行)
- 先執行b=3,再執行兩個console.log,再執行:函數表達式申明,及執行。
總結
以上是生活随笔為你收集整理的一段代码看出JS的的解析到执行的顺序规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Loading(二)--ThreeBod
- 下一篇: gradle idea java ssm