ES6?關鍵字?let?和?ES5?及關鍵字?var?的區(qū)別解析
var 關鍵字
在 ES5 及以前,通過var
在塊級作用域中聲明的變量,外邊也可以訪問。塊級作用域就是一對{}
的作用域;塊級作用域可以是控制語句的作用域,也就是非函數的作用域。
function f() { { var x = 10; } console.log(x); // => 10 }
在 for 循環(huán)體中的變量 i,可以被打印出來,假如因為代碼過多,不知道何時間變量重命名了,只有運行時才報錯。又因為只有函數才可以創(chuàng)建一個塊級作用域,所以,針對于上面出現的問題,就要通過 IIFE
來創(chuàng)建一個塊級作用域。Ben Alman 將它命名為立即執(zhí)行的函數表達式(IIFE):
function iife() { (function () { for (var i = 10; i > 0; i--) {} })(); console.log(i); // => Uncaught ReferenceError: i is not defined }
let 關鍵字
var
可以穿透控制語句、條件語句這樣的作用域,導致變量沖突經常發(fā)生。所以,ES6 的let
就可以很好的解決我們的煩惱,這也是為什么現在推薦使用let
來聲明變量,而非var
。
function f() { for (var i = 10; i > 0; i--) {} console.log(i); // => Uncaught ReferenceError: i is not defined }
補充
如果不給 IIFE 函數加上分號,啟用格式化代碼之后可能導致兩個 IIFE 函數連在一起:
(function () { // ... })()(function () { // ... })();
可以通過!
或void
來避免:
!(function () { // ... })() void (function () { // ... })()
到此這篇關于ES6 關鍵字 let 和 ES5 及以前關鍵字 var 的區(qū)別的文章就介紹到這了,更多相關ES6 關鍵字 let 和 ES5內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
利用js給datalist或select動態(tài)添加option選項的方法
下面小編就為大家分享一篇利用js給datalist或select動態(tài)添加option選項的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01使用mock.js隨機數據和使用express輸出json接口的實現方法
這篇文章主要介紹了使用mock.js隨機數據和使用express輸出json接口的實現方法,需要的朋友可以參考下2018-01-01javascript簡寫常用的12個技巧(可以大大減少你的js代碼量)
這篇文章主要跟大家分享了javascript簡寫常用的12個技巧,通過這12個技巧可以大大減少你的js代碼量,看懂一種是入門,全懂就是大神,你能知道幾個呢?需要的朋友們下面跟著小編來一起學習學習下吧。2017-08-08