2. 變數值的比較
3. 引數的傳遞
4. 型別檢測
二、js變數的作用域與解析
基本資料型別
基本資料型別的值不能被修改,其值儲存在棧中,當變數賦予新的值,棧中的值被覆蓋引用資料型別
引用資料型別的值可以被修改,其位址儲存在棧中,值儲存在堆中棧堆基本資料型別a值
引用資料型別
b位址1
位址1c
位址2位址2
基本資料型別
由於其值儲存在棧中,每次比較都是棧中的值進行比較
引用資料型別
其位址儲存在棧中,每次比較進行的都是棧中位址的比較,從堆疊**中就可以看出,兩個相同的物件,其儲存在棧中的位址是不相同的
var a=
,b=;
console.
log(a === b)
;//得出結果為flase
總結:js中變數的比較是儲存在棧中內容的比較基本資料型別
引數複製定義變數的值後進行傳遞
var a=5;
function
fn(a)
console.
log(a)
;// 5
引用資料型別
引數複製引用的位址後進行傳遞,賦值是會對位址中的內容進行修改
var a=[5
];function
fn(a)
console.
log(a)
;// [1]
總結: js中引數的傳遞是對棧中的內容複製後進行傳遞typeof 變數 基本的型別都能由typeof分辨,但是部分型別無法區分 變數 instanceof 型別
instanceof 能夠對資料型別進行嚴格區分,沒有定義的變數會報錯
var a=
null
;console.
log(a instanceof
object);
//false
instanceof 的值是布林型別值全域性變數 區域性變數
定義在函式內部的變數,只能在函式內部進行訪問,作用域為區域性作用域
js變數和作用域
一 變數型別 i 100 number型別 i abc string型別 i object型別 i 1,2,3 array型別 二 變數宣告 var i 100 顯示宣告 i 100 隱示宣告 在函式內部使用var關鍵字宣告的變數為區域性變數 沒有使用var關鍵字,直接賦值宣告的是全域性變數 當我們...
js變數和作用域
js識別符號可以包含字母 下劃線 美元符 和數字,不能以數字開頭 使用關鍵字作為識別符號在大多數瀏覽器會導致 identifier expected 缺少識別符號 錯誤,保留字則會看具體的瀏覽器是否會報錯。所以也不要用關鍵字和保留字作為識別符號。js區分大小寫,如 y 和 y 是不同的變數 向變數分...
JS變數和作用域
1.變數資料型別和堆疊 1.1 資料型別 1 基本資料型別 數字 字串 布林值 undefined null 2 引用資料型別 物件 陣列 函式 1.2 堆疊 1 基本資料型別的值不能被修改,其值儲存在棧中,當變數賦予新的值,棧中的值被覆蓋。2 引用資料型別的值可以被修改,其位址儲存在棧中,值儲存在...