七种内置类型
number、string、boolean、undefined、null、object、symbol
(ES6新增加)。
基本类型和引用类型
- 基本类型指保存在栈内存中的数据;
- 引用类型(对象引用)指保存在堆内存中的对象,传递的是引用的地址;
IE8一些问题
indexOf
为 ECMAScript5 新方法,IE8及以下不支持;
setTimeout
setTimeout(callback, ms)
,setTimeout
只接受一个函数或者变量做为参数不接受闭包,因为闭包会自执行,最小延迟 4ms。
undefined 与 undeclared
undefined
表示已在作用域中声明但还没有赋值的变量是undefined
;undeclared
是还没有在作用域中声明过的变量是undeclared
,typeof
处理的时候返回的是undefined
;
类型检测
typeof
用来检测基本类型;instanceof
用来检测是否为数组、对象、正则;
let arr = [1, 2, 3, 4, 5];
console.log(arr instanceof Array); // true
let obj = {};
console.log(obj instanceof Object); // true
let reg = /g/;
console.log(reg instanceof RegExp); // true
复制代码
错误分类
ReferenceError 引用错误
顾名思义,在所嵌套的作用域中遍寻不到所需的变量,引擎就会抛出 ReferenceError 即引用错误。就是说这是一个未声明的变量,这个错误是一个非常重要的异常类型。
console.log(num); // Uncaught ReferenceError: Cannot access 'num' before initialization
let num = 30;
复制代码
上面错误就是:未捕获引用错误:无法在初始化之前访问变量 “num”
TypeError 类型错误
这种错误表示作用域判别成功,但是进行了非法的操作。比如,对一个非函数类型的值进行函数调用,或者引用 null、undefined
类型的值中的属性,将会抛出这类错误。
const obj = null;
console.log(obj.name); // Uncaught TypeError: Cannot read property 'name' of null
复制代码
上面错误就是:未捕获的类型错误:无法读取空的属性 “name”
let onChange = 'pr';
onChange(); // Uncaught TypeError: onChange is not a function
复制代码
上面错误就是:未捕获的类型错误:OnChange 不是函数