js變數和作用域

2021-10-02 14:42:14 字數 1584 閱讀 6421

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 引用資料型別的值可以被修改,其位址儲存在棧中,值儲存在...