想弄清楚這三者的區別,我們需要知道這三者最基本的來龍去脈。
var是es5中的變數,let、const是es6中的變數。
塊級作用域是在es6中引進的,那麼什麼是塊級作用域呢?
簡單的來說,就是包含在中的**就是叫塊級作用域,其中for語句、if語句也屬於塊級作用域。
既然是在es6中才有的塊級作用域,而且let、const也是es6中有的,由此可見,這兩者肯定跟塊級作用域有瓜葛,有說不清道不明的關係,不然人家新來的幹嘛要帶上你呢。
那麼我們現在來看幾個小例子
通過這個例子就徹底明白了var的作用了,更加理解了什麼是函式作用域、全域性作用域了。
那麼我們下面就要來看這三者之間有什麼不同點了,簡單概述一下:
有可能通過文字的描述讓你無法徹底明白是怎麼一回事,那麼還是用例子來說明一切問題吧,實踐才是檢驗真理的唯一標準嘛!
通過案例相信基本清楚了這三者各自的不同了,最後用一些人話來總結一下
var是之前的老大哥,什麼都是自己解決,不管是在函式裡還是在全域性,都可以由他說了算,但是這要根據前提來說明的,你在函式裡宣告了他,那麼你就必須讓他活在你的函式裡,他跑去別的函式裡,誰也不認識啊!所以還是得看好自己家的熊孩子,到處亂跑,是誰都不認識的,到時候發生什麼意外那就說不好了。但是你在全域性宣告了他,那麼就等同於你在村里用喇叭喊了這娃是我的,那麼不論他去誰家,別人都知道這是你的娃,都知道他叫什麼,是男是女,甚至還可能知道是是什麼時候生的,只要你告訴了全村人,什麼資訊都知道了嘛,資訊時代,哪有隱私了嘛。
let定義的變數就很悲慘了,只能在塊級作用域中使用,就像孫悟空給畫了個圈,告訴唐僧不能出去,不然後果很嚴重,唐僧不聽吧,就差點別當餃子餡了。所以說這個let宣告的變數活動範圍很小,就只有在之中待著,你跑出去了後果就很嚴重了。
const跟let就很像了,誰叫他們都是es6中一起生出來的呢,親兄弟都會有相似點的嘛,他們兩兄弟的差別就是這個const不能自己更改自己的資訊,在你出生的那一刻,你爸媽就給你取好名字了,要是不取名字的話,你就生不下來,而且以後你想更改名字都不行,所以由此可見這個名字有多金貴,跟你生命一樣。但是你的活動範圍跟你兄弟一樣了,不能亂跑,不然後果一樣嚴重。
var let const三者的區別
首先三者都是用來宣告變數的 作用範圍 var沒有塊級作用域,在任何位置定義的變數在外層都可以訪問到 作用域 全域性作用域 在最外層定義的變數 區域性作用域 在 中定義的變數 特點 首先如果在函式內部,就優先在函式內部查詢變數,如果沒有就繼續向外層查詢 var定義的變數可以提公升 console.lo...
var let const三者的區別
1.let不存在變數提公升 使用let宣告的變數,不會像使用var那樣存在 變數提公升 的現象。所以使用let宣告變數,必須遵循 先宣告,後使用 的原則。否則會報錯 console.log a referenceerror 在申明之前 a報錯 let a 10 如果是var宣告的變數,則不會報錯。c...
var let const三者的區別
本文參考,csdn 菜鳥教程 老生常談的問題了 也看了網上各種解析,自己理解了一下 在了解 var let const三者的區別 之前,我們需要明白乙個東西 作用域 作用域分為全域性作用域,函式作用域。當然,這是es5的說法 es6新增了塊級作用域,塊作用域由 包括,if語句和 for語句裡面的也屬...