es5中是不存在塊級作用域的。在es6增加了const和let,可以實現塊級作用
js中有兩種作用域,全域性作用域和方法作用域
function getdate()
getdate();
console.log(date) //reference error date在外面方法中訪問不到
但是有個問題,只要在方法中定義的var,在該方法中都可以訪問到。這就造成很多問題了。
於是在es6中新增了let和const兩個變數聲名的關鍵字。
一,let聲名的變數是塊級作用域,即在整個大括號{}中是個可以訪問到的。
在{}外訪問let定義的變數便會報錯,提示未定義
const和let的作用域一致都是塊級作用域。不同的是const變數一旦被賦值,就不能再賦值了。但是變數的值依舊可以改變。
如
const person =
person.name="laowang" //依舊可以修改
person = {} //×,不能被重新賦值
有了好用的const和let。var盡量不要用(大部分情況下使用const,在類似for迴圈需要改變時使用let)
const用來聲名常量,其他情況下一律使用let
javascript中let和var的區別
0.1 2018.02.23 11 06 字數 584 let是es6中新增命令,也是用來宣告變數的,可能很多小夥伴都像我一樣,定義變數的時候都會用var而很少用到let,那麼,let和var到底有什麼區別呢?let和var的區別體現在作用域上。var的作用域被規定為乙個函式作用域,而let則被規定...
let 和 const 宣告變數和常量 var
01 作用域只侷限於當前 塊 console.log str1 張三 console.log str2 無列印結果 02 使用let宣告的變數的作用域不會被提公升 03 在相同作用域下不能申明相同的變數 04 for迴圈體現let的父子作用域 var btns document.queryselec...
ES6 var和let和const的區別
console.log a 10 在執行前會先進行變數提公升,提公升到全域性作用域最頂層,實際執行 如下 var a undefined console.log a foo function foo 這裡的函式是先呼叫後宣告,在執行之前會進行變數提公升和函式提公升,實際執行 如下 function ...