基本数据类型(原始值类型/值类型)
Number: NaN\Infinity\正常数字 String: 正常字符串\模版字符串 Boolean: true\false Null: 空 typeof null ==> "object" Undefined: 未定义 Symbol: 唯一值 BigInt: 大数字
let str = "a";
// "a" === "a" ; true
// Symbol("a") === Symbol("a");// false
let obj = {
a: 1,
a: 2
};
let obj1 = {
[Symbol("a")]: 1,
[Symbol("a")]: 2
}
// obj.a = 2*/
//bigInt
//后端数据库在定义数字的时候会定义数字的长度
//JS中是有最大安全数字的(js中的数字是有最大长度限制的)
console.log(Number.MAX_SAFE_INTEGER);//js中的最大安全数字
console.log(Number.MIN_SAFE_INTEGER);
//bigInt数据类型
// let bigNum = 9007199254740991n;
// bigNum + 1
// VM616:1 Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions
// bigNum + 1n
引用数据类型(对象数据类型)
在js中Object是一个基类 Object: {}: 空对象 []: Array /^$/: RegExp new Date: 日期 Function ....
js中常见的数据类型判断
- typeof 只能判断基本数据类型(null==>object); 判断引用数据类型 都返回object
- instanceof 只有知道数据类型才可以判断 语法: 要判断数据类型的变量 instanceof Array
- constructor 语法: 要判断数据类型的变量.constructor === Array
- Object.prototype.toString.call() 原生js最全能的数据类型判断 "[object 数据类型]"
- -----
- Array.isArray() //数组API
- Number.isNaN() //是不是 不是一个数 NaN ===> not a number
思考题
var a = 1
var b = a
a.x = a = {
n:2
}
console.log(a) // ?
console.log(b) // ?
不懂的话看看这张图吧
a === b.x