JS类型

一.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);

原文地址:https://www.cnblogs.com/zhihaospace/p/11992568.html