日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

一段代码看出JS的的解析到执行的顺序规则

發布時間:2025/3/20 javascript 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一段代码看出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,用代碼表示:
VO1 = {a:10,b:undefined}

注意:這里需要注意的是函數表達式return function a(){}并不會提前申明,函數表達式和函數申明的異同是,除了標準的函數申明:function a(){},其他的都是函數表達式,如:var a = function (){}、(function a(){})...等。
注意:申明的權重:argument(函數的形參申明) > function聲明 > var聲明 (也就之前提高的變量提升Hoisting)

第 2.2 部分:(執行)
  • 先執行b=3,再執行兩個console.log,再執行:函數表達式申明,及執行。

總結

以上是生活随笔為你收集整理的一段代码看出JS的的解析到执行的顺序规则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。