一.JS中的数据类型
1.分类(2大类)
- 基本(值)类型
- Number: 任意数值
- String: 任意文本
- Boolean: true/false
- undefined: undefined
- null: null
- 对象(引用)类型
- Object: 任意对象
- Array: 特别的对象类型(下标/内部数据有序)
- Function: 特别的对象类型(可执行)
2.判断
- typeof:
- 可以区别: 数值, 字符串, 布尔值, undefined, function
- 不能区别: null与对象, 一般对象与数组
- instanceof
- 专门用来判断对象数据的类型: Object, Array与Function
- ===
- 可以判断: undefined和null
3.图表展示
(1)基本/值类型
方式 | 类型 | 描述 |
---|---|---|
typeof | Number | 任意数值 |
typeof | String | 任意字符串 |
typeof | Boolean | true/false |
typeof/=== | undefined | undefined |
=== | null | null |
(2)对象/引用类型
方式 | 类型 | 描述 |
---|---|---|
typeof/instanceof | Object | Object |
instanceof | Array | 数组 |
typeof | Function | 函数 |
补充:
1 <script> 2 3 var a = {"name":"a"}; 4 var b = {"name":"b"}; 5 console.log(a.toString()); //[object Object] 6 7 var t={}; 8 t[a] = 4; 9 t[b] = 5; 10 console.log(t[a]); //5 11 12 </script>
其中t[a]相当于t[a.toString()]变为了t["[object object]"],b也一样此时值就被修改了。
4.对象使用属性什么时候使用点号什么时候使用中括号:
注意:两种写法不同:
- 点号:obj.key
- 中括号:obj["key"]或obj['key']
1 var obj = { 2 name: "obj", 3 age: 1 4 } 5 6 console.log(obj.name); //obj 7 console.log(obj["name"]);//obj 8 console.log(obj['name']);//obj
(1)点号可以使用的情况下中括号一定可以使用,反之中括号可以使用点号则不一定可以使用
当对象的键值为数字时不能使用obj.1而是使用obj["1"]
1 var obj={ 2 0:"0", 3 1:"1", 4 2:"2" 5 } 6 console.log(obj["1"]); 7 //console.log(obj.2)会报错
当对象的键值需要进行拼接时不能使用点号,而是使用中括号
1 var obj={ 2 a0:"0", 3 a1:"1", 4 a2:"2" 5 } 6 for(var index=0;index<3;index++){ 7 console.log(obj["a"+index]); 8 }
(2)当属性为变量者特殊字符时使用中括号
当属性为变量时,中括号会将变量调用toString()方法:b.toString() = "x" ==> a[b]==a["x"]
1 var b = "x"; //把属性x的标识符名作为字符串存储在变量b中 2 var a = {x : 1}; //定义对象a 3 console.log(a[b]); //返回1。通过变量间接获取对象a的属性x的值 4 console.log(a.b); //返回undefined。点运算符无法识别变量引用
特殊的:
1 let symbol = Symbol(); 2 console.log(typeof symbol); 3 console.log(symbol); 4 5 let obj = {username: 'kobe', age: 39}; 6 obj[Symbol.iterator] = function(){}; //不规则或特殊的属性 7 console.log(obj);