一些定义报错信息

166 阅读1分钟

扩展: 报错信息

Uncaught TypeError: Cannot read property 'toString' of undefined

=> 你的代码里面一定有一个 xxx.yyy

=> 之所以报错, 因为 xxx 是 undefined

Uncaught TypeError: Cannot read property 'toString' of null

=> 你的代码里面一定有一个 xxx.yyy

=> 之所以报错, 因为 xxx 是 null

预解析案例

  • 有 变量 的解析

  • 有 声明式函数 的解析

  • 问题: 变量名 和 函数名 重名了

  • 当 函数 和 变量 重名的时候, 在预解析阶段以函数为准

扩展: 报错信息

  • Uncaught TypeError: fn is not a function

  • 当你看到它的时候

=> 我前面的代码是不是用过 fn 这个变量了

*/

// fn()

// var fn = 100

// fn() -----------报错,因为上面给fn赋值了

// function fn() {

// console.log('我是 fn 函数')

// }

// fn()

/*

预解析

\1. var fn

\2. function fn() { ... }

  • 声明 fn 变量

  • 声明 fn 变量 并且赋值为一个函数

  • 预解析结束的时候, 浏览器记录的 fn 变量是一个函数

代码开始执行

\1. fn() // 把 fn 当做函数执行

\2. fn = 100 // 给 fn 赋值为 100, 当你给他赋值为 100 的时候, fn 记录的函数没有了

\3. fn() // 把 fn 当作函数执行, fn 的值式 100, 报错, 程序中断

\4. fn()

*/

// fn()

// function fn() {

// console.log('我是 fn 函数')

// }

// fn()

// var fn = 100

// fn()

/*

fn()

function fn() {

console.log('我是 fn 函数')

}

fn()

var fn = 100

fn()

预解析的时候

\1. function fn() {}

\2. var fn

代码执行

\1. fn()

\2. fn()

\3. fn = 100

\4. fn()

*/

// // 第一天

// var fn = 100

// // 第二天

// function fn() {}

// fn()