Ⅰ、js 作用域与 this
一.作用域
1. 全局变量可以直接引用
2. 函数内的普通变量使用
3. 普通函数可以对全局变量做赋值,发生的是一个永久的改变
4. 通过元编程定义的函数,访问相应的变量,因为不是window的,而是内部的,所以会报 not defined 的错误。
var six = (function(){ var foo = 6; return function(){ return foo; } })() //js解释器会先执行temp,忽略最后的(),然后再执行var six = (temp)()
5. 通过元编程定义的函数中的变量,不会污染全局变量。
二、this
定义:指当然作用域的对象实例。
三、实战经验
1. 在 Vue 的方法定义中容易出错,当代码看起来没问题,但 console 总报”xx undefined“时,十有八九是忘记加 this 了 。this代表当前对象,属性需要通过this.
2. 在发起 HTTP 请求时容易出错。返回数据后,在 .then(function(data){}) 中不能使用this,因为这里的 this 表示 HTTP request event. 但是如果使用 => 就可以正常使用 this 了。