• 每个块级都创建一个函数作用域, 作用域中创建形参都只限制于该函数作用域内,不同函数作用域内的形参相互独立

实例

for (var i = 0; i < 3; i++) {
    (function (j) {//每个块级都创建一个函数作用域, 作用域中创建形参j的变量
        setTimeout(function () {
            console.log(j);
        }, 1000);
    })(i)
}

等同于

for (let i = 0; i < 3; i++) {
      setTimeout(function() {
          console.log(i);
      }, 1000);
  }