作用域面試總結 持續更新系列

2022-01-22 10:06:19 字數 2598 閱讀 9621

先說幾個概念:

1、js**從上往下執行 

2、變數提公升:

變數提公升是瀏覽器的乙個功能,在執行js**之前,瀏覽器會給js乙個全域性作用域叫window

,window分兩個模組,乙個叫記憶體模組,乙個叫執行模組,記憶體模組找到當前作用域下的所有帶var和function的關鍵字,執行模組執行js**,從上到下執行,遇到變數就會通過記憶體位址去查詢這個變數,有和沒有這個變數。有這個變數就會看賦值沒賦值,如果賦值就是後面的值,如果沒有賦值就是undefined,如果沒有找到就說這個變數is not defined。

3、作用域鏈:

當函式內部的變數被使用時,首先會在自己的私有作用域下查詢是否有這個變數,如果有

就使用,如果沒有就會向上一級(父級)查詢,父級有就使用父級的,如果沒有就繼續向上一級找,有就使用,沒有就接著往上找,直到window,window有就用,沒有就是is not defined。我們管這種查詢機制叫做作用域鏈。

一、簡單的小案例:

fun();      //私有作用域下沒有宣告變數a,就在父級找,有就直接使用。

4、

var   a = 123;

function   fun()

fun()

alert(a)  //456      fun()裡改變了全域性變數a的值

5、

var   a = 123;

function   fun(a)

fun();

alert(a)  //123    全域性變數a

6、

var   a = 123;

function    fun(a)

fun(123)

alert(a)  //123

7、

var   a = 12;

function   fn()

fn()

8、

function test(a,b)       function關鍵字,在記憶體模組裡面宣告和定義同時進行

console . log(a)  //1   

c=0;

a=3;

b=2;

console . log(b);    //2

function   b()

function   d()

console . log(b)    //2

}test(1)

9、

function   test(a,b)  覆蓋了實參

console . log(b)  //undefined

var   b=234;

console . log(b)  //234

a=123;

console . log(a)  //123

function   a()

var   a;

b=234;

var   b=function ()

console . log(a);  //123

console . log(b) //function

}test(1)

二、阿里面試:

三、自呼叫函式:

+function()

console.log(a);

function b(){}

b = 6;

console.log(b);

var c = d = b;

}()console.log(d);

console.log(c);

注:自呼叫函式沒有變數提公升!

C 個人總結系列01(持續更新)

本章主要記錄個人在學習過程中簡單且實用的語法所做筆記,持續更新系列 對計算機下達的指令 1 引入命名空間 2 定義命名空間 類的住址 對類進行邏輯上的劃分,避免重名 3 定義類 做工具 4 定義方法 做功能 5 方法 表示功能 6 返回值 功能的結果 方法定義者 告訴 方法呼叫者的結果 7 型別 資...

總結持續更新

1 從屬關係的區別 link屬於xhtml標籤,而 import是css提供的語法規則,link除了載入css,還可以定義rss,定義rel連線屬性等,import就只能載入css。2 載入順序的區別 頁面載入時,link會同時被載入,而 import引用的css會等頁面被載入完後再載入。3 相容性...

面試體會 持續更新

從3月5號開始參加宣講會,到今天3月8號,已經整整四天了。3.5的tp link投完簡歷到現在杳無音訊 3.6的北部灣航空噼里啪啦經歷了兩個人的群面,最後莫名其妙被刷了,不知道是因為我群面裡表現的有點強勢,對方的觀點最後都妥協了,還是因為對方是北部灣航空當地的人。最後通知我被刷了,我都以為我聽錯了。...