一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第 13 天,点击查看活动详情。
简单数据类型(原始类型)
Undefined、Null、Boolean、Number、 String 和 Symbol。Symbol(符号)是 ECMAScript 6 新增的。
复杂数据类型
Object是一种无序名值对的集合
typeof操作符
确定任意变量的数据类型
let str = '字符串呀',
num = 100,
flag = true;
let nn = null,
uu = undefined;
let fn = function() {
console.log('i am function')
}
let arrowSum = (a, b) => {
return a + b;
};
let sym = Symbol();
let obj = {};
let arr = [1,2,3];
let now = new Date();
let pattern = /at/g;
const m = new Map([
["key1", "val1"],
["key2", "val2"],
["key3", "val3"]
]);
const s = new Set(["val1", "val2", "val3"]);
function* generatorFn() {}
class Person{};
console.log('str:', typeof str) // str: string
console.log('num:', typeof num) // num: number
console.log('flag:', typeof flag) // flag: boolean
console.log('nn:', typeof nn) // nn: object
console.log('uu:', typeof uu) // uu: undefined
console.log('fn:', typeof fn) // fn: function
console.log('arrowSum:', typeof arrowSum) // arrowSum: function
console.log('sym:', typeof sym) // sym: symbol
console.log('obj:', typeof obj) // obj: object
console.log('arr:', typeof arr) // arr: object
console.log('now:', typeof now) // now: object
console.log('pattern:', typeof pattern) // pattern: object
console.log('m:', typeof m) // m: object
console.log('s:', typeof s) // s: object
console.log('generatorFn:', typeof generatorFn) // generatorFn: function
console.log('Person:', typeof Person) // Person: function
通过上面代码输出内容可以看出:对一个值使用 typeof 操作符会返回下列字符串之一
1. undefined表示值未定义;
2. boolean表示值为布尔值;
3. string表示值为字符串;
4. number表示值为数值;
5. object表示值为对象(而不是函数)或 null;
6. function表示值为函数;
7. symbol表示值为符号。
注意:
- null 返回的是object, 因为特殊值 null 被认为是一个对空对象的引用;
- 函数在ECMAScript中被认为是对象,并不代表一种数据类型,但函数有自己特殊的属性,使用typeof操作符可以区分函数与其他对象
不同数据类型
Undefined类型
- 只有一个值:undefined;
- 使用var或let声明变量没有初始化时,默认就是undefined;
- 增加这个特殊值的目的就是为 了正式明确空对象指针(null)和未初始化变量的区别;
- 对声明但未初始化的和未声明的变量调用typeof时,都返回undefined;(提倡声明变量时进行初始化,可以方便区分到底是未声明还是声明了但未初始化)
- undefined是一个假值,即
Boolean(undefined)为false;
Null类型
- 只有一个值:null;
typeof null会返回object,null 值表示一个空对象指针- 使用null 来初始化一个对象变量
console.log(null == undefined); // truenull与undefined表面相等- null 是一个假值,即
Boolean(null)为false;
Boolean类型
- 有两个字面值:true 和 false
- 字面值区分大小写的
- Boolean()转型函数可以在任意类型的数据上调用,而且始终返回一个布尔值。