函数与块级作用域

作用域

如何在某些位置存储变量,以及如何在稍后找到这些变量

image

什么结构可以创建作用域气泡?

  • 函数
  • 块级作用域
    • with
    • try/catch
    • let
    • const

let/const

let 关键字将变量声明附着在它所在的任何块儿(通常是一个 { .. })的作用域中。

换句话说,let 为它的变量声明隐含地劫持了任意块儿的作用域。

var foo = true;

if (foo) {
  let bar = foo * 2;
  bar = something( bar );
  console.log( bar );
}

console.log( bar ); // ReferenceError

let 定义的 bar 被限定在 {...}

块级作用域一些作用

闭包和释放内存的垃圾回收

垃圾回收

function process(data) {
  // 做些有趣的事
}

// 运行过后,任何定义在这个块中的东西都可以消失了
{
  let someReallyBigData = { .. };

  process( someReallyBigData );
}

var btn = document.getElementById( "my_button" );

btn.addEventListener( "click", function click(evt){
  console.log("button clicked");
}, /*capturingPhase=*/false );

let 循环

for (let i=0; i<10; i++) {
  console.log( i );
}

console.log( i ); // ReferenceError
posted @ 2020-07-15 17:32  to人间值得  阅读(61)  评论(0)    收藏  举报