一、数据类型及其检测方法
5种基本数据类型:Undefined, Null, Boolean, Number, String
Undefined
- 只有一个值:undefined
- 使用 var, let 声明但未对其初始化时,其值为 undefined
Null
- 只有一个值:null,表示一个空对象指针
- 定义用来保存对象的变量,初始化推荐设为 null
Boolean
- 只有两个值:true, false
- 流控制语句会自动进行布尔值转换
Number
-
包括整数和浮点数
let intNum = 1; let floatNum1 = 1.1; let floatNum2 = 0.1; let floatNum3 = .1; //有效但无推荐 // 保存浮点数所需内存空间是整数的两倍,若浮点数小数点后都是0,则会当作整数来保存 let floatNum4 = 1.; let floatNum5 = 1.0; // 用科学计数法表示较大或较小的数 let floatNum6 = 1e7; let floatNum7 = 1e-7; // 小数点后带有6个0以上默认以科学计数法显示 let floatNum8 = 1e-6;
-
整数字面量格式:十进制、八进制、十六进制
// 八进制,以"0o"开头,后接0-7的数字 let octalNum1 = 0o70; // 十六进制,以"0x"开头,后接0-9、A(a)-F(f) let hexNum1 = 0xA; let hexNum2 = 0x1f;
-
进行算术运算时,其他进制都会先转化为十进制
-
极值:Number.MIN_VALUE, Number.MAX_VALUE
-
isFinite(number) 判断是否有穷
console.log(isFinite(res)); // false
-
isNaN(number) 判断是否为 NaN
- NaN 是一个特殊的数值,本来要返回数值的操作数未返回数值时返回 NaN(避免抛出错误)
- NaN 涉及的任何操作都返回 NaN;NaN 不与任何值相等,包括它本身
let nanNum = 1 * "a"; console.log(nanNum, nanNum === nanNum, isNaN(nanNum)); // NaN, false, true
String
- 用于表示零或多个16位 Unicode 字符组成的字符序列,由""或''包括
- 字符串不可变,重新赋值是先销毁原字符串然后用另一个新值字符串填充该变量
- 转义序列:\n(换行), \t(制表), \b(退格), \r(回车), \f(进纸), \(斜杠), '(单引号), \"(双引号), \xnn(以16进制代码 nn 表示的字符), \unnnn(以16进制代码 nn 表示的 Unicode 字符)
1种复杂数据类型:Object(由一组无序键值对组成)
常用对象类型:Array, Function, Date, Math, Regexp
Object
- 一组数据和功能的集合
- 通过 new 操作符后跟要创建的对象类型名称来创建
- Object 类型是所有它的实例的基础,实例拥有 Object 类型中的所有属性和方法
数据类型检测:基本数据类型用 typeof(),复杂数据类型用 instanceof()
const undef = undefined;
const nul = null;
const bool = false;
const num = 1;
const str = "hello";
const obj = {};
const arr = [];
const date = new Date();
const reg = new RegExp(`.`);
console.log(typeof undef); // undefined
console.log(typeof nul); // null 是一个空对象指针,所以返回 object
console.log(typeof bool); // boolean
console.log(typeof num); // number
console.log(typeof str); // string
console.log(typeof arr); // object, typeof 对所有复杂类型都返回 object
console.log(obj instanceof Object); // true
console.log(arr instanceof Array); // true
console.log(date instanceof Date); // true
console.log(reg instanceof RegExp); // true