问题锦囊

1. 为什么let声明的变量在window中无法获取?

① ES5和ES6声明的变量的区别

ES5 ES6
变量声明 var function let const import class
顶层对象window 顶层对象 <=> 全局对象 全局变量和顶层对象的属性分离
let len = 10
function fn() {
  console.info(this.len)
}
fn() // undefined
let Person = {
  len: 5,
  say: function() {
    fn() // undefined
    arguments[0]() // undefined
  },
  say2: function() {
    console.info(this.len) // 5
    arguments[0]() // undefined
  }
}
Person.say(fn)
Person.say2(fn)
var len = 10
function fn() {
  console.info(this.len)
}
fn() // 10
let Person = {
  len: 5,
  say: function() {
    fn() // 10
    arguments[0]() // undefined
  }
}
Person.say(fn)

② this指向

调用方式 栗子 this指向
普通函数调用 f() window 严格模式undefined
对象方法调用 o.f() o 指向当前的对象
构造函数调用 new f() 当前的实例对象
函数上下文 call apply bind 第一个参数

2. 怎么引入一个公共组件?封装要注意什么?

  • 引入可以用require.context()自动引入某文件夹下面的组件
  • 封装要考虑通用性(复用性),参数的输入输出

3. 要优化一个组件的话,怎么做才不会影响到以前引用过这个组件的代码?

  • 优化组件要做到兼容前面的功能,如果有单元测试,跑一下单元测试,单元测试就是为了防止影响以前的代码。
posted on 2019-12-07 11:50  pleaseAnswer  阅读(416)  评论(0编辑  收藏  举报