加不加new的区别
数组
- 数组就是原型链中有 Array.prototype 的对象
- 伪数组
- 有 0,1,2,3,4,5...n,length 这些 key 的对象
- 原型链中没有 Array.prototype
- 目前知道的伪数组有
-
- arguments 对象
-
- document.querySelectAll('div') 返回的对象
-
函数
- 函数的声明
- console.log
- 自动生成return undefined
- 作用域问题
- 箭头函数
- 五种
- name属性
- 如果new 函数名是anonymous
- 调用函数
- eval()给一段字符串,当代码执行
- call()在Function.prototype中
- f.call(undefined,1,2)是真正的调用
- this和arguments
- call的第一个参数可以用this得到
- call的后面参数可以用arguments得到
- arguments是伪数组,__proto__不是Array.prototype
- call Stack调用栈
- 递归
- 用call stack理解
- 作用域
- 做题先作用域图和注意变量提升
- 闭包
- 函数使用了其范围以外的变量,这个函数和这个变量就是闭包