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的返回值就行了
版权声明:本文为singerlee-changealive原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。