原创 JS深淺拷貝及其實現

                 基本數據類型和引用數據類型 JS數據分爲基本數據類型和引用數據類型。基本數據類型的變量存儲在棧中,引用數據類型則存儲在堆中,引用數據類型的存儲地址則保存在棧中。 下面來看一個小例子🌰 //

原创 隊列的定義及模擬實現

定義 隊列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱爲隊尾,進行刪除操作的端稱爲隊頭。隊列的數據元素又稱爲隊

原创 JS數組遍歷的十二種方式

遍歷有如下幾種方式 數組方法 map forEach filter find findIndex every some reduce reduceRight 其他方法 for for in for of 數組方法 map 核心

原创 簡單易懂的JS繼承圖解

JS繼承的實現方式一共有八種。下面我們來一個一個瞅一下。注意⚠️:文章依據個人理解,難免有問題,還望各位及時指出!!!!! 原型鏈繼承 借用構造函數繼承 組合繼承 原型式繼承 寄生繼承 寄生組合式繼承 原型拷貝和構造函數實現繼承 Cla

原创 棧的模擬實現及常見算法

定義 棧是一種特殊的線性表,它只能在一個表的一個固定端進行數據結點的插入和刪除操作。棧按照後進先出的原則來存儲數據,也就是說,先插入的數據將被壓入棧底,最後插入的數據在棧頂,讀出數據時,從棧頂開始逐個讀出。棧在彙編語言程序中,經常用於重要數

原创 JS的數據屬性和訪問器屬性

  ECMA-262第5版在定義只有內部才用的特性(attribute)時,描述了屬性(property)的各種特徵。ECMA-262定義這些特性是爲了實現javascript引擎用的,因此在javascript中不能直接訪問它們。爲了表

原创 setTimeout的實現及其問題

  定義 定時器,用來指定某個函數在多少毫秒之後執行。它會返回一個整數,表示定時器的編號,同時你還可以通過該編號來取消這個定時器。 實現 定時器的實現 當通過 JavaScript 調用 setTimeout 設置回調函數的時候,渲染進

原创 消息隊列和事件循環(Event Loop)

  產生原因 爲什麼會有消息隊列和事件循環呢?首先最關鍵的一點在於JS是個單線程,並且主線程非常繁忙,既要處理 DOM,又要計算樣式,還要處理佈局,同時還需要處理 JavaScript 任務以及各種輸入事件。要讓這麼多不同類型的任務在主線

原创 JS變量聲明提升

首先來看一段代碼 console.log(a) var a = 2; 輸出結果是undefined,正常來說JS如果是逐行向下執行,那麼應該輸出未定義,爲何此處輸出undefined呢? 原因在於JS在執行前都會進行編譯(

原创 JS的閉合(Closure)

  定義 MDN:函數和對其周圍狀態(lexical environment,詞法環境)的引用捆綁在一起構成閉包(closure)。 JS高程: 閉包是指有權訪問另一個函數作用域中的變量的函數。 Javascript權威指南:函數對象可以

原创 JS的作用域和作用域鏈

  作用域 定義 作用域是指在程序中定義變量的區域,該位置決定了變量的生命週期。通俗地理解,作用域就是變量與函數的可訪問範圍,即作用域控制着變量和函數的可見性和生命週期。 ⚠️:作用域是由代碼中函數聲明的位置來決定的,跟在哪裏調用無關 用

原创 JS的執行上下文

  定義 執行上下文時是代碼執行時的環境,JS代碼在運行前進行編譯,那麼會生成兩部分,一部分是可執行的代碼,而另一部分則是執行上下文。 發展 執行上下文所包含的內容是在不斷的變化的。它主要分爲了三個不同的階段。分別是ES3階段,ES5階段

原创 JS內存機制

在看JS內存機制之前我們先來看一下JS是門什麼樣的語言,他又有哪些變量類型。 動靜態,強弱類型 靜態:在使用之前就需要確認其變量數據類型。 動態:在運行過程中需要檢查數據類型。 強類型:不支持隱式類型轉換。 弱類型:支持隱式類型轉換。 而

原创 HTTP請求方式及常見問題

請求方式 當前HTTP一共有八種方式。有三種是有HTTP1.0提供,剩餘五種則是有HTTP1.1提供 常見問題 啥是OPTIONS?有啥作用 是瀏覽器對複雜跨域請求的一種處理方式,在真正發送請求之前,會先進行一次預請求,就是我們剛剛說到的

原创 瀏覽器及常見網絡問題

1.常用的http狀態碼有哪些⛵️ https://www.yuque.com/suihangadam/liulanqi/mihyae 2.HTTP請求有哪些?🙏 https://www.yuque.com/suihangadam/l