1. 程式人生 > 程式設計 >JavaScript高階程式設計之變數與作用域

JavaScript高階程式設計之變數與作用域

目錄
  • 1、原始值與引用值
  • 2、instanceof
  • 3、作用域

1、原始值與引用值

6種簡單資料型別的值VFNPbAPLjM都是原始值, 原始值通過變數賦值給另一個變數VFNPbAPLjM時,會複製一個出一個新的值,兩者相互獨立。

let num1 = 5
let num2 = num1


JavaScript高階程式設計之變數與作用域

引用值通過變數賦值給另一個變數時,也會複製一個值,這個值其實是一個指標(引用),該指標指向的還是同一個物件。

let obj1 = new Object()

let obj2 = obj1

JavaScript高階程式設計之變數與作用域

既然是指向同一個引用物件,那麼給obj1新增屬性,也會作用到obj2身上去。

obj1.name = "zhangsan"

console.log(obj2.name) // zhangsan


函式在傳參的過程中,只有一種情況就是按照值傳遞,這跟變數的賦值是一個樣。只不過,對於引用值,傳遞的值是指標,但指標指向的還是同一http://www.cppcns.com個物件。

2、instanceof

typeof 一般適合用來判斷原始值,對於引用值並不使用,因為 null 和 其它物件返回的都是 object,具體是什麼型別的物件並不知道。 而判斷引用值具體是什麼型別物件最好的方法就是用 instanceof 表示式。

console.log(1 instanceof Object)  //false
let obj = new Object();
console.log(obj instanceof Object)  //true
console.log(null instanceof Object)  //false



function fun(){
    //
}
console.log(fun instanceof Object)  //true
console.log(fun instanceof Function) //true

console.log([] instanceof Object) //true
console.log([] instanceof Array) //true

3、作用域

變數的作用範圍稱為作用域或者執行上下文,變數脫離了該作用域不再可見,所有系統查詢一個變數時是有一個作用域鏈的。先從引用該變數最近的塊作用域找,沒找到繼續往外區域性作用域找,再沒找到就在全域性作用域中查詢。如果還沒找到就會報錯 ReferenceError: xxx is not defined

到此這篇關於Jawww.cppcns.comvaScript高階程式設計之變數與作用域的文章就介紹到這了,更多相關變數與作用域內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!