#29
JS数据类型
Champ2026.01.13 17:40created at 2026.01.13 17:40updated at 2026.04.29 13:00
0 次阅读

JS数据类型有
基本类型:string,number,boolean,null,undefined,symbol,bigint
引用类型:object(array,function,date,map,set,promise)
console.log(undefined+1);
//输出NaN(是一个数值类型,但不是一个具体的数字)
console.log(typeof null);
//输出object(历史遗留bug)
undefine 和 null的区别
// undefined - 系统级的缺失
let data; // 我还没决定放什么数据
// null - 应用级的缺失
let data = null; // 我明确表示这里没有数据
undefined
-
表示变量未定义或值不存在
-
是 JavaScript 引擎默认赋予的
-
常见场景:
javascript
let a; // a 是 undefined function foo() {} // foo() 返回 undefined obj.unknownProp // 访问不存在的属性
null
-
表示有意识设置的“空值”
-
是开发者主动赋值的
-
常见场景:
javascript
let user = null; // 明确表示用户不存在 let element = document.getElementById('nonexistent'); // 返回 null
检查数据类型的方法
//typeof 基本数据类型管用,引用数据类型不管用
console.log(typeof 'abc') //Array
console.log(typeof [1,2,3]) //object(不管用,还是不知道是什么)
//instanceof 引用数据类型管用,基本数据类型不管用
console.log( [] instanceof Array) //true
console.log( 'abc' instanceof String) //false
//constructor 基本都管用
console.log(('abc').constructor === String)//true dude
console.log([1,2,3].constructor === Array)//true dude
// Object.prototype.toString.call() 都管用
var opt = Object.prototype.toString
console.log(opt.call(2))// [object Number]
console.log(opt.call('abc'))// [object String]
console.log(opt.call([2,2,3]))// [object Array]
console.log(opt.call({name:'Alice',age:20}))// [object Object]
console.log(opt.call(()=>'hi'))// [object Function]