Web基礎 JAVAScript基礎之閉包詳解

2021-07-30 17:31:33 字數 1122 閱讀 6257

最近遇到的一些坑,都是因為自己基礎掌握的不夠紮實,因此想抽時間做乙個專題,把一些核心的語法深入的理解一下。

閉包是指乙個函式或函式的引用,與乙個引用環境繫結在一起,這個引用環境是乙個儲存該函式每個非區域性變數的表。

閉包不同於一般函式,它允許乙個函式在立即詞法作用域外呼叫時,仍可訪問非本地變數。

1.全域性作用域

2.函式作用域

3.eval作用域

注:1.js中是沒有塊級作用域的。

2.作用域從內到外均可以訪問到。

把變數放到匿名函式,變成區域性變數,避免大量的全域性變數造成衝突。

(function

())()

;

!function

()();

!的作用:把函式變成函式表示式而不是函式的宣告。若變成函式的宣告,就會被前置處理掉,最後留下了括號或者沒有寫名字都會報語法錯誤。

作用域鏈:建立的作用域中物件的集合。

作用域中的每個物件被稱為可變物件,以鍵值對的形式存在。

1.執行上下文

2.變數物件:是乙個抽象概念中的物件,它用於儲存執行上下文中的變數宣告,函式宣告,函式引數。

全域性環境下也有乙個變數物件:

vo===this===global

3.啟用物件(ao):函式呼叫的時候,會有乙個特定的arguments物件。

4.vo填充順序:

(1)函式引數(若未傳入,初始化該引數為undefined)

(2) 函式宣告(若發生命名衝突,會覆蓋)

(3)變數宣告(初始化變數值為undefined,若發生命名衝突,會忽略)

5.執行過程

函式建立時->作用域鏈中插入乙個物件變數(全域性變數)

函式執行時->建立乙個執行環境內部物件,每次執行函式都建立乙個新的執行物件。

每個執行環境都有對應的作用域鏈,用於解析識別符號。

建立執行物件時,首先填充[[scope]]作用域(活動物件),並被置入前端,當執行環境被銷毀,活動物件也隨之銷毀。

javascript函式基礎 this基礎

this是函式體內自帶的乙個物件指標,它能夠始終指向呼叫物件 這個this代表的物件由this所在的執行作用域決定的,而不是根據this所在的定義作用域決定。this 屬性 如果this未包含屬性,則直接傳遞的是當前物件 1.this代表當前操作物件 this即代表 物件input 2.this代表...

javascript 基礎 動畫

function positionwhere js 有兩個地方我一直沒注意 現在寫出來提醒一下自己 1.在html中的匯入是有順序的js的執行的非同步且高速 依賴其他方法執行的指令碼必須在他依賴的指令碼的後面匯入 不然速度太快了 依賴的方法還沒匯入就直接去尋找 找不到的 比如addloadevent...

JavaScript基礎 陣列

1.陣列簡介 陣列的定義方式1 輸出結果 陣列的定義方式2 字面量 輸出結果如下 2.陣列的四種方法 1.push 方法 作用 向陣列末尾新增元素並且返回新的陣列長度 輸出結果如下 2.pop 方法 作用 刪除並返回陣列的最後乙個元素 輸出結果如下 3.unshift 方法 作用 向陣列開頭新增乙個...