欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中的原始值和復(fù)雜值

 更新時間:2016年01月07日 10:31:15   作者:小火柴的藍(lán)色理想  
這篇文章主要介紹了JavaScript中的原始值和復(fù)雜值 的相關(guān)資料,需要的朋友可以參考下

 前面的話

  javascript的數(shù)據(jù)類型可以分為兩種:原始類型和引用類型。原始類型也稱為基本類型或簡單類型,javascript基本數(shù)據(jù)類型包括Undefined、Null、Boolean、Number和String五種,而引用類型也稱為復(fù)雜類型,在Javascript中是Object。與此相對應(yīng),它們的值也分別被稱為原始值和復(fù)雜值

特性

原始值(primitive value)

簡單的說:原始值是固定而簡單的值,是存放在棧(stack)中的簡單數(shù)據(jù)段,也就是說,它們的值直接存儲在變量訪問的位置.

  原始值是表示Javascript中可用的數(shù)據(jù)或信息的最底層形式或最簡單形式。原始類型的值被稱為原始值,是因為它們是不可細(xì)化的。也就是說,數(shù)字是數(shù)字,字符是字符,布爾值則是true或false,null和undefined就是null和undefined。這些值本身很簡單,不能表示由其他值組成的值

有哪些類型是原始類型呢?

原始類型(primitive type)有以下五種類型:Undefined,Null,Boolean,Number,String

我們可以使用typeof來判斷一個是否在某個類型的范圍內(nèi).

typeof運(yùn)算符

對變量或值使用typeof運(yùn)算符將會返回下列值之一:

注意:

1.返回值為字符串類型.

2.和原始類型比,還差了個null,這個比較特殊,使用typeof(null),返回的是"object",我們將null理解成是object的占位符.

復(fù)雜值

  復(fù)雜值可以由很多不同類型的javascript對象組成。復(fù)雜對象其在內(nèi)存中的大小是未知的,因為復(fù)雜對象可以包含任何值,而不是一個特定的已知值

存儲方式

棧存儲

  因為原始值占據(jù)空間固定,是簡單的數(shù)據(jù)段,為了便于提升變量查詢速度,將其存儲在棧(stack)中

堆存儲

  由于復(fù)雜值的大小會改變,所以不能將其存放在棧中,否則會降低變量查詢速度,因此其存儲在堆(heap)中,存儲在變量處的值是一個指針,指向存儲對象的內(nèi)存處

訪問方式

按值訪問

  原始值是作為不可細(xì)化的值進(jìn)行存儲和操作的,引用它們會轉(zhuǎn)移其值

var myString = 'foo';
var myStringCopy = myString;
var myString = null;
console.log(myString,myStringCopy);//null,'foo' 

引用訪問

  復(fù)雜值是通過引用進(jìn)行存儲和操作的,而不是實際的值。創(chuàng)建一個包含復(fù)雜對象的變量時,其值是內(nèi)存中的一個引用地址。引用一個復(fù)雜對象時,使用它的名稱(即變量或?qū)ο髮傩?通過內(nèi)存中的引用地址獲取該對象值

var myObject = {};
var copyOfMyObject = myObject;//沒有復(fù)制值,而是復(fù)制了引用
myObject.foo = 'bar';//操作myObject中的值
//現(xiàn)在如果輸出myObject和copyOfMyObject,則都會輸出foo屬性,因為它們引用的是同一個對象
console.log(myObject,copyOfMyObject);//Object{foo="bar"} 

比較方式

  原始值采用值比較,而復(fù)雜值采用引用比較。復(fù)雜值只有在引用相同的對象(即有相同的地址)時才相等。即使是包含相同對象的兩個變量也彼此不相等,因為它們并不指向同一個對象

var price1 = 10;
var price2 = 10;
var price3 = new Number('10');
var price4 = price3;
console.log(price1 == price2);//true
console.log(price1 == price3);//false
price4 = 10;
console.log(price4 == price3);//true
console.log(price4 === price3);//false 
var objectFoo = {same:'same'};
var objectBar = {same:'same'};
console.log(objectFoo == objectBar);//false
var objectA = {foo: 'bar'};
var objectB = objectA;
console.log(objectA == objectB);//true 

動態(tài)屬性

  對于復(fù)雜值,可以為其添加屬性和方法,也可以改變和刪除其屬性和方法;但簡單值不可以添加屬性和方法

  復(fù)雜值支持動態(tài)對象屬性,因為我們可以定義對象,然后創(chuàng)建引用,再更新對象,并且所有指向該對象的變量都會獲得更新。一個新變量指向現(xiàn)有的復(fù)雜對象,并沒有復(fù)制該對象。這就是復(fù)雜值有時被稱為引用值的原因。復(fù)雜值可以根據(jù)需求有任意多個引用,即使對象改變,它們也總是指向同一個對象

var str = 'test';
str.property = true;
console.log(str.property);//undefined  
var objA = {property: 'value'};
var pointer1 = objA;
var pointer2 = pointer1;
objA.property = null;
console.log(objA.property,pointer1.property,pointer2.property);//null null null 

包裝類型

  原始值被當(dāng)作構(gòu)造函數(shù)創(chuàng)建的一個對象來使用時,Javascript會將其轉(zhuǎn)換成一個對象,以便可以使用對象的特性和方法,而后拋棄對象性質(zhì),并將它變回到原始值

相關(guān)文章

  • JS如何顯示防盜鏈的外站圖片技巧示例

    JS如何顯示防盜鏈的外站圖片技巧示例

    通常在開發(fā)測試環(huán)節(jié),一些資源圖片會出現(xiàn)防盜鏈的錯誤提示,本文就通過前端基礎(chǔ)技術(shù),實現(xiàn)基本的圖片跨站顯示效果,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • element-ui的表單驗證清除校驗提示語的解決方案

    element-ui的表單驗證清除校驗提示語的解決方案

    對表單域中的數(shù)據(jù)進(jìn)行校驗的時候,其中有一項比較特殊,不是簡單的輸入框,下拉框這些表單元素,而是自己寫的一個el-table的選擇彈窗,本文給大家介紹element-ui的表單驗證如何清除校驗提示語,感興趣的朋友一起看看吧
    2024-01-01
  • js中傳遞特殊字符(+,&)的方法

    js中傳遞特殊字符(+,&)的方法

    這篇文章主要介紹了js中傳遞特殊字符(+,&)的方法,有需要的朋友可以參考一下
    2014-01-01
  • 用js實現(xiàn)鍵盤方向鍵翻頁功能的代碼

    用js實現(xiàn)鍵盤方向鍵翻頁功能的代碼

    用js實現(xiàn)鍵盤方向鍵翻頁功能的代碼...
    2007-06-06
  • javascript禁止訪客復(fù)制網(wǎng)頁內(nèi)容的實現(xiàn)代碼

    javascript禁止訪客復(fù)制網(wǎng)頁內(nèi)容的實現(xiàn)代碼

    這篇文章主要介紹了javascript禁止訪客復(fù)制網(wǎng)頁內(nèi)容的方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • javascript設(shè)計模式 – 單例模式原理與應(yīng)用實例分析

    javascript設(shè)計模式 – 單例模式原理與應(yīng)用實例分析

    這篇文章主要介紹了javascript設(shè)計模式 – 單例模式原理與應(yīng)用,結(jié)合實例形式分析了javascript單例模式原理、定義、應(yīng)用場景及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-04-04
  • 基于原生JS實現(xiàn)圖片裁剪

    基于原生JS實現(xiàn)圖片裁剪

    要進(jìn)行圖片編輯,最重要要能夠?qū)D片進(jìn)行裁剪。主要的實現(xiàn)分成兩部分,一部分是前端利用js進(jìn)行裁剪區(qū)域選擇,第二部分是利用PHP進(jìn)行后臺處理?,F(xiàn)在就跟大家分享一下。
    2016-08-08
  • 老生常談js中0到底是 true 還是 false

    老生常談js中0到底是 true 還是 false

    下面小編就為大家?guī)硪黄仙U刯s中0到底是 true 還是 false。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 一文帶你搞懂JavaScript中數(shù)組的特性

    一文帶你搞懂JavaScript中數(shù)組的特性

    數(shù)組是幾乎所有編程語言的基礎(chǔ)語法,JavaScript因為語法特性,我們更需要理解數(shù)組知識。本文從JavaScript中數(shù)組的一些特殊之處入手,通過這些少有特性的詳細(xì)介紹,加深我們對數(shù)組的理解
    2023-04-04
  • 在Node.js中使用Javascript Generators詳解

    在Node.js中使用Javascript Generators詳解

    下面小編就為大家?guī)硪黄贜ode.js中使用Javascript Generators詳解。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考
    2016-05-05

最新評論