小編給大家分享一下JavaScript中為什么要使用延展操作符,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)主營(yíng)安陸網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,手機(jī)APP定制開發(fā),安陸h5重慶小程序開發(fā)公司搭建,安陸網(wǎng)站營(yíng)銷推廣歡迎安陸等地區(qū)企業(yè)咨詢延展操作符首次于ES6中引入,并很快成為最受歡迎的功能之一。盡管事實(shí)上延展操作符只適用于數(shù)組,但仍有建議提出可以將其功能擴(kuò)展到對(duì)象。最終ES9中引入了此功能。
你可能會(huì)想:“JavaScript就已經(jīng)能夠滿足需求了,為什么還要使用延展操作符?”我們先來介紹下不變性。
牛津詞典:不變性-隨著時(shí)間的推移不變或無法改變。
作為軟件開發(fā)的術(shù)語,不可變指狀態(tài)不能隨時(shí)間變化的值。實(shí)際上,通常使用的大多數(shù)值(原始值,如字符串,整數(shù)等)都是不可變的。
然而,JavaScript中非常特殊的一點(diǎn)是,其中的數(shù)組和對(duì)象實(shí)際上是可變的。這可能成為一個(gè)大問題。
我們有一個(gè)變量Squirtle(杰尼龜)。因?yàn)閯倓傇L問了神奇寶貝中心,這只杰尼龜?shù)腍P值為100。
由于還想要另一只杰尼龜,因此聲明變量為anotherSquirtle,將初始Squirtle指定為它的值。一場(chǎng)苦戰(zhàn)后,另一只杰尼龜被擊敗了。因此,訪問另一只杰尼龜?shù)腍P值并將其更改為0。下一步,檢查初始Squirtle,輸入console.log和...
等等,什么?初始Squirtle的HP降至0。這怎么可能?可憐的杰尼龜遭遇了什么?原來是發(fā)生了JavaScript變異。接下來將為你解釋其中緣由。
當(dāng)創(chuàng)建anotherSquirtle變量并將初始Squirtle指定為其值時(shí),實(shí)際是給初始Squirtle對(duì)象的內(nèi)存位置分配了一個(gè)引用。這是因?yàn)镴avaScript數(shù)組和對(duì)象是引用數(shù)據(jù)類型。與基本數(shù)據(jù)類型不同,引用數(shù)據(jù)類型指向存儲(chǔ)實(shí)際對(duì)象/數(shù)組的內(nèi)存地址。
為了便于理解,可以將引用數(shù)據(jù)類型想象為全局變量的指針。更改引用數(shù)據(jù)類型的值實(shí)際上是在更改全局變量的值。
這意味著當(dāng)將anotherSquirtle的HP值更改為0時(shí),實(shí)際是將存儲(chǔ)在內(nèi)存中的Squirtle對(duì)象的HP值更改為0。這就是為什么mySquirtle的HP值為0-因?yàn)閙ySquirtle是對(duì)存儲(chǔ)在內(nèi)存中的對(duì)象的引用,可以通過anotherSquirtle變量被改變。
以上是“JavaScript中為什么要使用延展操作符”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!