js數據類型

就直接給本身寫的代碼吧:該寫的都寫在註釋裏了
  1 //js 數據類型共6種(es5)  number,string,boolean,null,undefined,引用數據類型(Array,Object,Function)
  2   //Symbol (ES6 新增,表示獨一無二的值)
  3   var typeArr = [
  4     {
  5       type: '數值類型',
  6       value: 251
  7     },
  8     {
  9       type: '字符串類型',
 10       value: 'abcdefg'
 11     },
 12     {
 13       type: '布爾類型',
 14       value: false
 15     },
 16     {
 17       type: '布爾類型',
 18       value: true
 19     },
 20     {
 21       type: 'null類型',
 22       value: null
 23     },
 24     {
 25       type: 'undefined類型',
 26       value: undefined
 27     },
 28     {
 29       type: '引用類型(對象{})',
 30       value: {}
 31     },
 32     {
 33       type: '引用類型(對象{a:2})',
 34       value: { a: 2 }
 35     },
 36     {
 37       type: '引用類型(數組[])',
 38       value: []
 39     },
 40     {
 41       type: '引用類型(數組[1])',
 42       value: [1]
 43     },
 44     {
 45       type: '引用類型(數組[1,2])',
 46       value: [1, 2]
 47     },
 48     {
 49       type: '引用類型(function)',
 50       value: function () { }
 51     }
 52   ]
 53   for (var i = 0; i < typeArr.length; i++) {
 54     console.log(typeArr[i].type + typeArr[i].value + '轉化爲數值:', Number(typeArr[i].value))
 55     console.log(`${typeArr[i].type}${typeArr[i].value}轉化爲字符串:`, String(typeArr[i].value))
 56     console.log(`${typeArr[i].type}${typeArr[i].value}轉化爲布爾值:`, Boolean(typeArr[i].value))
 57     console.log(`${typeArr[i].type}${typeArr[i].value}執行toString:`, typeArr[i].value && typeArr[i].value.toString())
 58     console.log(`${typeArr[i].type}${typeArr[i].value}執行valueOf:`, typeArr[i].value && typeArr[i].value.valueOf())
 59   }
 60   console.log()
 61   // console.log([] + {}) // "[object Object]"
 62   // console.log(Number([])) // "0"
 63   // console.log(String([])) // ""
 64 
 65   //基本數據類型之間轉化:
 66   /* 
 67   string轉number
 68     1.空字符串或全空字符串   0
 69     2.純數字字符串或者科學計算法或者進制數表示  得對應的數值
 70     3.其餘 NaN
 71   */
 72   console.log(Number('')) // 0
 73   console.log(Number('   ')) // 0
 74   console.log(Number('9527')) // 9527 純數字字符串
 75   console.log(Number('0x11')) // 17  16進製表示數
 76   console.log(Number('2e2')) // 200 科學計數
 77   console.log(Number('qerw')) // NaN
 78 
 79   /* 
 80   string轉Boolean
 81     只有空字符串轉爲 false
 82     其餘全爲true
 83   */
 84   console.log(Boolean('')) // false
 85   console.log(Boolean('   ')) // true
 86 
 87   /* 
 88   number轉string
 89     1.普通數直接加引號變成字符串
 90     2.表達式表示的數 將轉化爲實際數後加引號變成字符串
 91   */
 92   console.log(String(0)) // '0'
 93   console.log(String(0x11)) // '17'  
 94   console.log(String(2e2)) // '200' 
 95   console.log(String(2e-2)) // '0.02' 
 96   console.log(String(2 / 3)) // '0.6666666666666666'
 97 
 98   /* 
 99   number轉boolean
100     0爲false,非0爲true
101   */
102   console.log(Boolean(0)) // false
103   console.log(Boolean(1)) // true 
104 
105   /* 
106     boolean轉number
107       false 0,true  1
108     */
109   console.log(Number(true)) // 1
110   console.log(Number(false)) // 0
111 
112   /* 
113    undefined 轉number,string,boolean
114   */
115   console.log(Number(undefined)) // NaN
116   console.log(String(undefined)) // 'undefined'
117   console.log(Boolean(undefined)) // false
118 
119   /* 
120    null 轉number,string,boolean
121   */
122   console.log(Number(null)) // 0
123   console.log(String(null)) // 'null'
124   console.log(Boolean(null)) // false
125 
126   /* 
127     引用數據類型轉number
128     1.對象 NaN
129     2.數組 空數組爲0,只有一個元素且能夠轉化爲數字的會獲得對應的數值,其餘的都是NaN
130     3.函數 NaN
131   */
132   console.log(Number({})) // NaN
133   console.log(Number([])) // 0
134   console.log(Number([1])) // 1
135   console.log(Number(['0x11'])) // 17
136   console.log(Number([1, 2])) // NaN
137   console.log(Number([1, 2, 3])) // NaN
138   console.log(Number(function () { })) // NaN
139 
140   /* 
141     引用數據類型轉string
142     1.對象 '[object Object]'
143     2.數組 去掉[]和分隔逗號,剩下的內容用引號包起來造成字符串
144     3.函數 整個函數體加引號成爲字符串
145   */
146   console.log(String({})) // '[object Object]'
147   console.log(String([])) // ''
148   console.log(String([1])) // '1'
149   console.log(String([1, 2])) // '1,2'
150   console.log(String([1, 2, 3])) // '1,2,3'
151   console.log(String(function () { })) // 'function () { }'
152 
153 
154   /* 
155     引用數據類型轉boolean
156     全爲true
157   */
158   console.log(Boolean({})) // true
159   console.log(Boolean([])) // true
160   console.log(Boolean(function () { })) // true
161 
162 
163 
164   //js顯式類型轉換 規律和原理總結
165     // 1.Number()轉數值類型的過程:先調用原生方法valueOf,若是返回值是能夠轉化成數值的基本數據類型,直接返回整個結果,結束。若是返回值是非基本數據類型,根據調用原生方法toString的返回字符串類型轉化成最終的數值類型,結束。
166     // 2.String()轉字符串類型的過程:先toString方法,返回值。
167     //因此知道原理後,涉及到引用類型這種的,記住這些toString的返回值就好了
相關文章
相關標籤/搜索