国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

js執(zhí)行上下文

這篇具有很好參考價值的文章主要介紹了js執(zhí)行上下文。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

需求

創(chuàng)造執(zhí)行上下文,是為了把變量聲明給保存下來,在執(zhí)行時,好找到變量用

一見如故

  • 看代碼要分執(zhí)行前(構建執(zhí)行上下文)和執(zhí)行時去看
  • 執(zhí)行上下文的組成
    1、詞法環(huán)境:[全局對象]、scope、outer
    2、This Binding:提供this的訪問
  • 構建執(zhí)行上下文
    1、處理聲明
    2、檢查重復定義
    3、初步賦值

全局執(zhí)行上下文

全局對象為window或者global
outer為null
This Binding指向window

構建全局執(zhí)行上下文
1、處理聲明
①找到全局中的var聲明、頂級的全局函數聲明(不在大括號內、不在函數中,以function開頭的),并記錄全局對象中
②找到頂級的let、const、class,記錄到全局scope中,并記錄這些標識符的位置,在此之前不允許賦值
2、檢查重復定義
檢查全局scope中的變量名在全局對象及全局scope中有沒有重復出現,重復出現會報錯
3、初步賦值(在代碼執(zhí)行時,訪問一個沒有被賦值的變量會報錯)
①先給var申明的變量賦值為undefined
②再給函數標識符賦值一個函數對象,其中屬性包含:
prototype、name(函數名)、length(形參長度)、arguments、[[scope]]
函數對象的隱式屬性scope指向棧頂執(zhí)行上下文

函數執(zhí)行上下文

  • '函數對象’是在函數聲明時產生的,函數對象有個隱式的[[scope]]屬性,指向當前棧頂的執(zhí)行上下文
  • '函數的執(zhí)行上下文’包含scope、outer、this binding,是在函數執(zhí)行的前一刻生成的。并直接壓入執(zhí)行上下文棧頂,函數執(zhí)行結束,彈出棧頂
  • 如果在當前執(zhí)行上下文的scope中找不到變量,就沿著outer找,outer指向函數對象的[[scope]]

for循環(huán)中的執(zhí)行上下文

// 使用let的話,小括號和大括號都會生成各自的執(zhí)行上下文
// 當前執(zhí)行上下文中找不著,就沿著鏈找,就會找到小括號中的i
for(let i; i< 5;i++){
	setTimeout(function(){
		console.log(i)
	},0)
}
// 0,1,2,3,4
// 使用var的話,var聲明的變量在全局對象中
for(var i; i< 5; i++){
	setTimeout(function(){
		console.log(i)
	},0)
}
// 5,5,5,5,5

函數中的this

一、指向函數執(zhí)行上下文的this binding,默認是window,但是改變
1、隱式綁定this(對象’.'的方式)
2、顯示綁定this(call、apply)
二、在開發(fā)中this為什么難:
在框架中函數多出現以回調的模式,所以它去怎么綁定this的,我們并不知道
三、箭頭函數的執(zhí)行上下文沒有this binding,所以沒法綁定this,沒法new,它會去找其作用域鏈中的this文章來源地址http://www.zghlxwxcb.cn/news/detail-431775.html

到了這里,關于js執(zhí)行上下文的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • JavaScript中的執(zhí)行上下文和執(zhí)行棧

    JavaScript中的執(zhí)行上下文和執(zhí)行棧

    執(zhí)行上下文是評估和執(zhí)行JavaScript代碼環(huán)境的抽象概念,但我們在JavaScript中所做的聲明變量,聲明函數,執(zhí)行函數。他們都是在執(zhí)行上下文中運行,也有了所謂的作用域。 執(zhí)行上下文分為三種類型,例如全局申明掛到window下的變量就是全局執(zhí)行上下文; 函數被調用時創(chuàng)建的上

    2023年04月24日
    瀏覽(36)
  • 從 ECMAScript 6 角度談談執(zhí)行上下文

    從 ECMAScript 6 角度談談執(zhí)行上下文

    大家好,我是歸思君 起因是最近了解JS執(zhí)行上下文的時候,發(fā)現很多書籍和資料,包括《JavaScript高級程序設計》、《JavaScript權威指南》和網上的一些博客專欄,都是從 ES3 角度來談執(zhí)行上下文,用ES6規(guī)范解讀的比較少,所以想從ES6的角度看一下執(zhí)行上下文。 下面我嘗試用E

    2024年02月04日
    瀏覽(16)
  • 〖大前端 - 基礎入門三大核心之JS篇(51)〗- 面向對象之認識上下文與上下文規(guī)則

    〖大前端 - 基礎入門三大核心之JS篇(51)〗- 面向對象之認識上下文與上下文規(guī)則

    說明:該文屬于 大前端全棧架構白寶書專欄, 目前階段免費 , 如需要項目實戰(zhàn)或者是體系化資源,文末名片加V! 作者:哈哥撩編程,十余年工作經驗, 從事過全棧研發(fā)、產品經理等工作,目前在公司擔任研發(fā)部門CTO。 榮譽: 2022年度博客之星Top4、2023年度超級個體得主、谷

    2024年02月05日
    瀏覽(30)
  • 深入理解JavaScript堆棧、事件循環(huán)、執(zhí)行上下文和作用域以及閉包

    在JavaScript中,內存堆是內存分配的地方,調用棧是代碼執(zhí)行的地方。 原始類型的保存方式:在變量中保存的是值本身,所以原始類型也被稱之為值類型。 對象類型的保存方式:在變量中保存的是對象的“引用”,所以對象類型也被稱之為引用類型。 調用棧理解非常簡單,當

    2024年02月03日
    瀏覽(21)
  • JS引擎中的線程,事件循環(huán),上下文

    JS引擎中的線程,事件循環(huán),上下文

    ? 線程 瀏覽器中有哪些進程呢? 1.瀏覽器進程:瀏覽器的主進程,負責瀏覽器的界面界面顯示,與用戶交互,網址欄輸入、前進、后退,以及頁面的創(chuàng)建和銷毀。 2.渲染進程(瀏覽器內核):默認一個tab頁面一個渲染進程,主要的作用為頁面渲染,腳本執(zhí)行,事件處理等。 3.

    2024年02月08日
    瀏覽(20)
  • js中this關鍵字的作用和如何改變其上下文

    js中this關鍵字的作用和如何改變其上下文

    一、this 的作用 JavaScript 中的 this 引用了所在函數正在被調用時的對象。在不同的上下文中, this 的指向會發(fā)生變化。 在全局上下文中, this 指向全局對象(在瀏覽器中是 window 對象,在 Node.js 中是 global 對象)。 在函數中, this 指向調用該函數的對象。如果該

    2024年02月07日
    瀏覽(20)
  • 【二開】JeecgBoot-vue3二次開發(fā) 前端 擴展online表單js增強等-在表單里拿到列表上下文onlineTableContext

    【二開】JeecgBoot-vue3二次開發(fā) 前端 擴展online表單js增強等-在表單里拿到列表上下文onlineTableContext

    【二開】JeecgBoot-vue3二次開發(fā) 前端 擴展online表單js增強等-在表單里拿到列表上下文 對應的屬性方法 acceptHrefParams \\\"p 跳轉時獲取的參數信息\\\" currentPage \\\"p 當前頁數\\\" currentTableName \\\"p 當前表名\\\" description \\\"p 當前表描述\\\" hasChildrenField \\\"p 是否有子節(jié)點的字段名,僅樹形表單下有效\\\" is

    2024年02月15日
    瀏覽(22)
  • 超長上下文處理:基于Transformer上下文處理常見方法梳理

    超長上下文處理:基于Transformer上下文處理常見方法梳理

    原文鏈接:芝士AI吃魚 目前已經采用多種方法來增加Transformer的上下文長度,主要側重于緩解注意力計算的二次復雜度。 例如,Transformer-XL通過緩存先前的上下文,并允許隨著層數的增加線性擴展上下文。Longformer采用了一種注意力機制,使得token稀疏地關注遠距離的token,從而

    2024年02月13日
    瀏覽(24)
  • 無限上下文,多級內存管理!突破ChatGPT等大語言模型上下文限制

    無限上下文,多級內存管理!突破ChatGPT等大語言模型上下文限制

    目前,ChatGPT、Llama 2、文心一言等主流大語言模型,因技術架構的問題上下文輸入一直受到限制,即便是Claude 最多只支持10萬token輸入,這對于解讀上百頁報告、書籍、論文來說非常不方便。 為了解決這一難題,加州伯克利分校受操作系統(tǒng)的內存管理機制啟發(fā),提出了MemGPT。

    2024年02月06日
    瀏覽(26)
  • CPU上下文切換

    CPU 上下文切換,就是先把前一個任務的 CPU 上下文(也就是 CPU 寄存器和程序計數器)保存起來,然后加載新任務的上下文到這些寄存器和程序計數器,最后再跳轉到程序計數器所指的新位置,運行新任務。 CPU 的上下文切換就可以分為幾個不同的場景,也就是進程上下文切換、

    2024年02月14日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包