2019-03-23

this的指向

匿名回调函数中的this指向
深入JavaScript 执行上下文

  1. new Foo() 绑定新对象
  2. bind/call/apply 绑定指定的对象
  3. 绑定上下文
  4. 默认全局

以后会加上高程上对作用域链的内容

(function foo1(){})
function foo2(){}

这个问题我有点看不懂,也在 segmentfault上提问了,MDN上写:name可以省略(此时是匿名函数),这个name对这个函数可见,高程上利用这个来写递归函数

var factorial = (function f(num){
  if(num<=1){
    return 1;
  }else{
    return num*f(num-1)
  }
}) // 最外层的括号可以不要,没有看出差别

常规写法,这样如果后面执行 factorial = null,就会报错,是不是可以认为是消除耦合。

function factorial(num){
  if(num<=1){
    return 1;
  }else{
    return num*factorial(num-1)
  }
}

下面这种写法在严格模式下会报错,不能通过脚本访问 arguments.callee

function factorial(num){
  if(num<=1){
    return 1;
  }else{
    return num*arguments.callee(num-1)
  }
}