阅读 620

Javascript 常见问题小结

七种内置类型

number、string、boolean、undefined、null、object、symbol(ES6新增加)。

基本类型和引用类型

  • 基本类型指保存在栈内存中的数据;
  • 引用类型(对象引用)指保存在堆内存中的对象,传递的是引用的地址;

IE8一些问题

  • indexOf 为 ECMAScript5 新方法,IE8及以下不支持;

setTimeout

setTimeout(callback, ms)setTimeout 只接受一个函数或者变量做为参数不接受闭包,因为闭包会自执行,最小延迟 4ms。

undefined 与 undeclared

  • undefined 表示已在作用域中声明但还没有赋值的变量是 undefined
  • undeclared 是还没有在作用域中声明过的变量是 undeclaredtypeof 处理的时候返回的是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 不是函数

你可以...

下一篇:Javascript 函数的认知

关注下面的标签,发现更多相似文章
评论