塊級作用域 let const var的區別
阿新 • • 發佈:2020-11-27
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