javascript中的數據類型

整理以及總結一下,回溯下基礎。javascript

ECMAScript中具備兩種數據類型的值,分別是 基本類型值和引用類型值。java

在ECMAScript中,基本類型值指的是簡單的數據段,引用類型值指那些可能由多個值構成的對象。es6

基本數據類型

基本數據類型:undefined(未定義的值的默認值) null(還沒有存在的對象) boolean(true or false) number(數字) string(字符串)。
基本類型的值不能添加屬性。數組

var str = 'I am basic';
str.type='basic';//it is wrong!!!

這五種數據類型是按值訪問的,也就是操做的是保存在變量中實際的值,改變了就是改變了。
引用類型:這種類型就是在操做的時候,操做的是其自身的引用,而不是實際的對象。固然這一塊還要再細化一點,當操做動做是複製時,操做的是對象的引用。當操做動做是添加時,操做的是實際的對象函數

下面說說一些操做以及開發中的注意點工具

基本操做

基本類型:就是複製,copy,你會獲得兩個如出一轍的東西,而且這兩個之間是相互獨立的post

var a = 111;
var b = a;
a+=10;
console.log(a);//121
console.log(b);//111

引用類型:引用類型在接受到複製操做這個命令時,也是會把變量對象中的值複製一份放到一個新的空間中。可是,這個值並非真正的值,而是一個指針或者說是路徑,它指向了存儲在堆中的一個對象。複製以後的這兩個變量只是兩個指針,指向同一個地方。
這樣的話,改變一個,另外一個也得變化。指針

var a ={};
var b=a;
a.age=18;
console.log(b.age);//18

拷貝操做

因此在平常開發中,常常會用到對象的賦值操做,這裏直接用‘=’可能會引發沒必要要的一些bug,這裏通常用一些方法避免掉。code

  • for循環,鍵值對應賦值,數據對象均可以,這裏要注意一個深淺拷貝,深拷貝要對當前對象的全部的屬性進行遍歷賦值
    深刻剖析 JavaScript 的深複製
  • arrB=arrA.slice(0)
    js的數組操做方法 slice會返回一個新的數組,接受兩個參數(start,end),若是沒有傳end,默認爲從start到數組尾部.
  • arrB=arrA.concat()
    js的數組操做方法,一樣返回一個新數組。
  • var arrA=[1,2,3];
       var [...arrB]=arrA;
       console.log(arrB)//[1,2,3]

    這裏用上了es6的擴展運算符,原理就是先拆掉再放進數組裏。對象

  • var objB=JSON.parse(JSON.stringify(objA))
    拷貝一個字符串(基本類型)會新開闢出一個存儲地址,這樣就沒有以前的引用了。
  • var objA={'name':'11','age':'22'}
       var {...objB}=objA;

    是的,這樣也能夠的。。。

這樣開發中能夠根據須要複製的數據來選擇相對簡單方便的方法。

小結

很是基礎的知識點了,可是開發中不注意也會引發沒必要要的麻煩,同時在平常開發中能夠針對不一樣的需求提早寫好工具函數,統一塊兒來。方法多不必定是好事,羣魔亂舞。

相關文章
相關標籤/搜索