日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

發(fā)布時(shí)間:2025/4/16 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

[Java教程]JavaScript中值類型和引用類型的區(qū)別

0 2017-02-24 00:00:35

JavaScript的數(shù)據(jù)類型分為兩類:原始類型和對(duì)象類型。其中,原始類型包括:數(shù)字、字符串和布爾值。此外,JavaScript中還有兩個(gè)特殊的原始值:null和undefined,它們既不是數(shù)字也不是字符串,更不是布爾值。它們通常分別代表了各自特殊類型的唯一成員(詳情可點(diǎn)擊查看:JavaScript中的null和undefined)。JavaScript中除了數(shù)字、字符串、布爾值、null和undefined之外的就是對(duì)象了。

JavaScript中值類型和引用類型的區(qū)別

JavaScript中的值類型的值是不可變的:

任何方法都無(wú)法改變值類型的值。數(shù)字、布爾值、null和undefined等都屬于不可變類型。比如,修改一個(gè)數(shù)值的內(nèi)容,本身就說(shuō)不通。雖然字符串可以被看成是由字符組成的數(shù)組,可能會(huì)被認(rèn)為是可變的。但是,在JavaScript中,字符串是不可變的。在實(shí)際操作過(guò)程中,可以訪問(wèn)字符串任意位置的文本,單JavaScript并未提供修改已知字符串的文本內(nèi)容的方法。

代碼:var str = 'abcdef';console.log(str.toUpperCase()); // ABCDEFconsole.log(str); // abcdef

可見(jiàn),原始的str字符串值并未發(fā)生改變,仍然是小寫的abcdef,第二行代碼,只是調(diào)用了字符串的toUpperCase()方法后,返回的是一個(gè)新的字符串。

JavaScript中的引用類型的值是可變的:

代碼:var student = {name: '張三', age: 26};console.log(student.name); // 張三student.name = '李四';console.log(student.name); // 李四

疑問(wèn):如果像studen.name = '李四'這段代碼一樣,給str也做相同的操作,str的值不也是改變了嗎?

擴(kuò)展:如果給str重新賦值,那么改變的是變量的值,給str重新賦值了,并沒(méi)有改變字符串內(nèi)容,改變的只是變量str的內(nèi)容

JavaScript中的值類型無(wú)法添加屬性和方法:

代碼:var student = '張三';student.age = 26;student.run = function () {console.log('跑步中...');}console.log(student.age); // undefinedconsole.log(student.run); // undefined

通過(guò)代碼示例,可知,不能給值類型添加屬性和方法。從而,也更加說(shuō)明了值類型是不可變的。

JavaScript中的引用類型可以添加屬性和方法:

代碼:var student = {};student.age = 26;student.run = function () {console.log('跑步中...');}console.log(student.age); // 26console.log(student.run);/*function () {console.log('跑步中...');}*/

JavaScript中的值類型的變量是存放在棧區(qū)的:

JavaScript中的值類型的變量存儲(chǔ)結(jié)構(gòu)如下表模擬所示,棧區(qū)中包括了變量的標(biāo)識(shí)符以及變量所對(duì)應(yīng)的值。

JavaScript中的引用類型的變量也是存放在棧區(qū)的,不同的是,引用類型在棧區(qū)中存放的是變量標(biāo)識(shí)符以及變量所對(duì)應(yīng)值得引用地址,而變量所對(duì)應(yīng)的值被存放在堆區(qū)中:

所以,可以看出,即使兩個(gè)對(duì)象完全一樣,但是在堆區(qū)中的存放地址是不一樣的,所以在比較時(shí),是不相等的。

JavaScript中的值類型的比較是值的比較:

JavaScript中的值類型在進(jìn)行比較的時(shí)候,只有在它們的值相等的時(shí)候,它們才相等。注意:比較的時(shí)候注意“==”和“===”,雙等號(hào)(==)在做比較的時(shí)候,做了類型轉(zhuǎn)換,而全等號(hào)(===)是值和類型的比較,只有值和類型同時(shí)相等時(shí),才能相等。

代碼:var student1 = '{}';var student2 = '{}';console.log(student1 === student2); // true

兩個(gè)相同字符串的比較,是值(‘{}’)的比較,完全相等。

JavaScript中的引用類型的比較是引用地址的比較:

代碼:var student1 = {};var student2 = {};console.log(student1 === student2); // false

可見(jiàn),兩個(gè)空對(duì)象并不相等。

疑問(wèn):為什么兩個(gè)一模一樣的對(duì)象不相等呢?

擴(kuò)展:因?yàn)橐妙愋褪前匆玫刂吩L問(wèn)的,引用類型的比較其實(shí)就是比較兩個(gè)對(duì)象在堆內(nèi)存中的地址是否相同,那么,很明顯,student1和student2在堆內(nèi)存中地址是不同的,所以,即使看到一模一樣的兩個(gè)對(duì)象,也不一定相等。

JavaScript中的值的變量賦值,是值得復(fù)制:

JavaScript中的值類型的變量賦值過(guò)程中,在從一個(gè)變量到另一個(gè)變量賦值基本類型(值類型)時(shí),會(huì)在該變量上創(chuàng)建一個(gè)新值,然后再把該值復(fù)制到為新變量分配的位置上:

代碼:var str1 = 'abcdef';var str2 = str1;str1 = 'abc';console.log(str1); // abcconsole.log(str2); // abcdef

從上述代碼示例中可以看出,str1中保存的值為 abcdef ,當(dāng)使用 str1 來(lái)初始化 str2 時(shí),str2 中保存的值也為abcdef,但str2中的值和str1中的值是完全獨(dú)立的,str2的值只是str1中的值的一個(gè)副本,接下來(lái),這兩個(gè)變量可以參加任何操作而相互不影響。其實(shí)就是說(shuō),基本類型的變量在賦值操作后,兩個(gè)變量是相互獨(dú)立的,都不受影響的。

JavaScript中的引用類型的變量賦值過(guò)程中,在從一個(gè)變量到另一個(gè)變量賦值引用類型時(shí),同樣也會(huì)在該變量上創(chuàng)建一個(gè)新“值”,然后再把該“值”復(fù)制到為新變量分配的位置上。不同的是,復(fù)制的不是真正的“值”,而是真正的值在堆區(qū)中的存放地址:

代碼:var student1 = {age: 26};var student2 = student1;student2.age = 100;console.log(student1.age); // 100console.log(student2.age); // 100console.log(student2 === student1); // true

引用類型的賦值其實(shí)是對(duì)象保存在棧區(qū)地址指針的賦值,兩個(gè)變量都保存了同一個(gè)對(duì)象地址,則這兩個(gè)變量指向了同一個(gè)對(duì)象。因此,改變其中任何一個(gè)變量,都會(huì)相互影響。

本文網(wǎng)址:http://www.shaoqun.com/a/302346.html

*特別聲明:以上內(nèi)容來(lái)自于網(wǎng)絡(luò)收集,著作權(quán)屬原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們:admin@shaoqun.com。

JavaScript

0

總結(jié)

以上是生活随笔為你收集整理的java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: a一级黄色片 | 相亲对象是问题学生在线观看 | 国产精品第56页 | 极品色av影院 | 丁香在线视频 | 日本女优在线看 | 伊人一区二区三区 | 狠狠干天天| 空姐吹箫视频大全 | 色播五月激情 | 亚洲蜜桃精久久久久久久久久久久 | 女人一区二区三区 | 高潮白浆女日韩av免费看 | 色综合天天综合网天天看片 | 久色视频在线观看 | 免费人成自慰网站 | 亚洲国产欧美一区二区三区深喉 | 亚洲国产中文字幕在线 | 日韩精品一区二区三区 | 91精品国产91久久久久久黑人 | 国产精品一线天 | 欧美日韩激情在线一区二区三区 | 一区二区三区高清在线观看 | 欧美福利精品 | 欧美三级在线播放 | 欧美干干 | 精品国产一区二区三 | 亚洲午夜精品 | 男人天堂久久 | 日韩成人av在线播放 | 久久人人爽爽人人爽人人片av | 99久久久国产精品 | 希岛婚前侵犯中文字幕在线 | 色香蕉在线 | 高清一级片| 久久久久久久久久久网 | 中文字字幕一区二区三区四区五区 | 国产欧美视频在线观看 | 一级特黄特色的免费大片视频 | 丰满人妻一区二区三区性色 | 午夜激情小视频 | 你懂的在线免费观看 | 国产一区二区小视频 | yjizz视频 | 日韩欧美一区二区区 | 久久99精品久久久久久噜噜 | 四色永久访问 | 日韩美女做爰高潮免费 | 欧美成人影院 | 久章草在线观看 | 欧美国产视频一区 | 亚洲精品综合精品自拍 | 好姑娘在线观看高清完整版电影 | 天天色天天射天天操 | 欧美亚洲国产成人 | 欧美精品久久久久久久 | 97在线免费观看视频 | 99热免费在线 | 美女网站免费黄 | 日本道中文字幕 | 日韩毛片无码永久免费看 | 天天碰天天碰 | 性色av浪潮 | 色在线视频 | 日本一区二区三区四区五区 | 丰满少妇高潮在线观看 | 欧美日韩国产高清 | 在线观看欧美视频 | 精品一区二区三区视频日产 | 亚洲最新av| 男人的天堂一区二区 | 无套爆插| 精品无码久久久久久久久成人 | 丰满人妻一区二区三区免费视频棣 | 在线观看www视频 | 日韩成人三级 | 美女视频黄色免费 | 国产精品国产三级国产aⅴ无密码 | 国产免费一区二区三区视频 | 四虎国产在线观看 | 美女视频三区 | 日韩人妻精品一区二区三区 | 高清不卡av | 国产最新视频 | 亚洲美女视频在线 | 自偷自拍av | 中文字幕在线永久 | www一区二区三区 | 色综合久久久久久 | 国产精品久久影视 | 欧美xxxx精品| 国产欧美久久久 | 亚洲成人精品在线观看 | 国产av不卡一区二区 | 久久精品欧美日韩 | 欧美一二区视频 | 天天在线观看 | 樱空桃在线 | 边打电话边做 |