前端面試題:JS中的let和var的區別
最新
03-30
最近很多前端的朋友去面試被問到let和var的區別,其實阮一峰老師的ES6中已經很詳細介紹了let的用法和var的區別。我簡單總結一下,以便各位以後面試中使用。
ES6 新增了let命令,用來聲明局部變數。它的用法類似於var,但是所聲明的變數,只在let命令所在的代碼塊內有效,而且有暫時性死區的約束。
先看個var的常見變數提升的面試題目:
如果以上題目有理解困難的童鞋,請系統的看一下老馬的JS高級視頻(http://qtxh.ke.qq.com)
ES6可以用let定義塊級作用域變數
在ES6之前,我們都是用var來聲明變數,而且JS只有函數作用域和全局作用域,沒有塊級作用域,所以{}限定不了var聲明變數的訪問範圍。
let 配合for循環的獨特應用
let沒有變數提升與暫時性死區
let變數不能重複聲明
let不允許在相同作用域內,重複聲明同一個變數。否則報錯:
Uncaught SyntaxError: Identifier "XXX" has already been declared
例如:
let a = 0;l
et a = "sss";
// Uncaught SyntaxError: Identifier "a" has already been declared
總結
ES6的let讓js真正擁有了塊級作用域,也是向這更安全更規範的路走,雖然加了很多約束,但是都是為了讓我們更安全的使用和寫代碼。
老馬目前專註於做線下的IT全棧實習,不8000就業不還實習費,如果有需要的請關注一下: aicoder.com
TAG:寒門老馬 |