先說幾個概念:
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的北部灣航空噼里啪啦經歷了兩個人的群面,最後莫名其妙被刷了,不知道是因為我群面裡表現的有點強勢,對方的觀點最後都妥協了,還是因為對方是北部灣航空當地的人。最後通知我被刷了,我都以為我聽錯了。...