JavaScript高級(jí)程序設(shè)計(jì)之變量與作用域
1、原始值與引用值
6種簡(jiǎn)單數(shù)據(jù)類(lèi)型的值都是原始值, 原始值通過(guò)變量賦值給另一個(gè)變量時(shí),會(huì)復(fù)制一個(gè)出一個(gè)新的值,兩者相互獨(dú)立。
let num1 = 5 let num2 = num1

引用值通過(guò)變量賦值給另一個(gè)變量時(shí),也會(huì)復(fù)制一個(gè)值,這個(gè)值其實(shí)是一個(gè)指針(引用),該指針指向的還是同一個(gè)對(duì)象。
let obj1 = new Object() let obj2 = obj1

既然是指向同一個(gè)引用對(duì)象,那么給obj1添加屬性,也會(huì)作用到obj2身上去。
obj1.name = "zhangsan" console.log(obj2.name) // zhangsan
函數(shù)在傳參的過(guò)程中,只有一種情況就是按照值傳遞,這跟變量的賦值是一個(gè)樣。只不過(guò),對(duì)于引用值,傳遞的值是指針,但指針指向的還是同一個(gè)對(duì)象。
2、instanceof
typeof 一般適合用來(lái)判斷原始值,對(duì)于引用值并不使用,因?yàn)?null 和 其它對(duì)象返回的都是 object,具體是什么類(lèi)型的對(duì)象并不知道。 而判斷引用值具體是什么類(lèi)型對(duì)象最好的方法就是用 instanceof 表達(dá)式。
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、作用域
變量的作用范圍稱(chēng)為作用域或者執(zhí)行上下文,變量脫離了該作用域不再可見(jiàn),所有系統(tǒng)查找一個(gè)變量時(shí)是有一個(gè)作用域鏈的。先從引用該變量最近的塊作用域找,沒(méi)找到繼續(xù)往外局部作用域找,再?zèng)]找到就在全局作用域中查找。如果還沒(méi)找到就會(huì)報(bào)錯(cuò) ReferenceError: xxx is not defined。
到此這篇關(guān)于JavaScript高級(jí)程序設(shè)計(jì)之變量與作用域的文章就介紹到這了,更多相關(guān)JavaScript變量與作用域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何編寫(xiě)高質(zhì)量 JavaScript 代碼
如果要編寫(xiě)出高質(zhì)量的 JavaScript 代碼,可以從以下三個(gè)方面去考慮。分別是:易閱讀的代碼、高性能的代碼、健壯性的代碼。下面我將分別對(duì)這三個(gè)方面進(jìn)行闡述。需要的朋友可以參考一下2021-09-09
前端canvas中物體邊框和控制點(diǎn)的實(shí)現(xiàn)示例
這篇文章主要為大家介紹了前端canvas中物體邊框和控制點(diǎn)的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
TypeScript獲取二叉樹(shù)的鏡像實(shí)例
這篇文章主要為大家介紹了TypeScript獲取二叉樹(shù)的鏡像實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
微信小程序支付之c#后臺(tái)實(shí)現(xiàn)方法
這篇文章主要介紹了微信小程序支付之c#后臺(tái)實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
JS前端面試數(shù)組扁平化手寫(xiě)flat函數(shù)示例
這篇文章主要為大家介紹了JS前端面試數(shù)組扁平化手寫(xiě)flat函數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
async-await消滅異步回調(diào)實(shí)例詳解
這篇文章主要為大家介紹了async-await消滅異步回調(diào)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07

