1. 程式人生 > 實用技巧 >塊級作用域 let const var的區別

塊級作用域 let const var的區別

1.JS作用域

JS中作用域有:全域性作用域、函式作用域。沒有塊作用域的概念。ECMAScript 6(簡稱ES6)中新增了塊級作用域。
塊作用域由 { } 包括,if語句和for語句裡面的{ }也屬於塊作用域。

2.var在塊級作用域

一: 通過var定義的變數可以跨塊作用域訪問到。

  {
    var a = 1;
    console.log(a);    // 1
  }
  console.log(a);   // 1

二:通過var定義的變數不能跨函式作用域訪問到

  (function A() {
    var b = 2;
    console.log(b);   // 2
  })();
  console.log('外層b===', b);   // Uncaught ReferenceError: b is not defined

三:if語句和for語句中用var定義的變數可以在外面訪問到,
因此,if語句和for語句屬於塊作用域,不屬於函式作用域。

  if (true) {
    var c = 3;
  }
  console.log(c); // 3
  for (var i = 0; i < 4; i++) {
    var d = 5;
  };
  console.log(i);    // 4   (迴圈結束i已經是4,所以此處i為4)
  console.log(d); // 5

  

2.let const let的區別?

var定義的變數,沒有塊的概念,可以跨塊訪問, 不能跨函式訪問。
let定義的變數,只能在塊作用域裡訪問,不能跨塊訪問,也不能跨函式訪問。
const用來定義常量,使用時必須初始化(即必須賦值),只能在塊作用域裡訪問,而且不能修改。

https://blog.csdn.net/smaller_coder/article/details/88352296