JavaScript高級程序設計之變量與作用域
1、原始值與引用值
6種簡單數據類型的值都是原始值, 原始值通過變量賦值給另一個變量時,會復制一個出一個新的值,兩者相互獨立。
let num1 = 5 let num2 = num1
引用值通過變量賦值給另一個變量時,也會復制一個值,這個值其實是一個指針(引用),該指針指向的還是同一個對象。
let obj1 = new Object() let obj2 = obj1
既然是指向同一個引用對象,那麼給obj1
添加屬性,也會作用到obj2
身上去。
obj1.name = "zhangsan" console.log(obj2.name) // zhangsan
函數在傳參的過程中,隻有一種情況就是按照值傳遞,這跟變量的賦值是一個樣。隻不過,對於引用值,傳遞的值是指針,但指針指向的還是同一個對象。
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
。
到此這篇關於JavaScript高級程序設計之變量與作用域的文章就介紹到這瞭,更多相關JavaScript變量與作用域內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- JavaScript判斷是否為數組的各種方法匯總
- 分享JavaScript 類型判斷的幾種方法
- 一篇文章弄懂js中的typeof用法
- JavaScript中檢測數據類型的四種方法
- JavaScript數據結構常見面試問題整理