Skip to content

立即调用函数(IIFE) #30

Description

@chengfengliu
function foo() {
  if(true) {
    var bar = 0;
  }
  alert(bar);
}
foo(); // shows 0

JavaScript(TypeScript)与Java不同,变量的作用域不是代码块(一段被花括号{}括起来的代码),而是函数体。
原因是在运行时,所有的变量声明都会在函数执行前移动到函数的顶端,这种行为被称为变量提升。

function foo() {
  var bar;
  if(true) {
    bar = 0;
  }
  alert(bar);
}

ES6中的let和const是块作用域。

立即调用函数表达式(IIFE)是一种设计模式,使用函数作用域作为一个词法作用域。IIFE可以被用于防止全局作用域中的变量提升导致的污染(隐藏私有变量)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions