二、let
三、const
總結在函式內宣告視為區域性變數,當函式結束時,該變數就被銷毀
function testvar()
testvar()
; console.
log(i)
;//報錯
<
/script>
在函式外宣告或直接省略 var(不推薦)則視為全域性變數
var y =10;
//推薦
function testvar2()
function testvar1()
testvar()
;//要呼叫
console.
log(i)
;//10
<
/script>
全域性宣告屬於 window 物件的屬性
var i =10;
console.
log(window.i)
;//10
<
/script>
使用 var 關鍵字宣告的變數會自動提公升到函式作用域頂部
即在函式作用域中,先將var關鍵字宣告的變數統一進行宣告,然後在按照順序執行語句
function testvar()
testvar()
;//等價於
function testvar()
testvar()
;<
/script>
在同乙個作用域中,允許重複宣告同乙個變數,
var i =20;
var i;
console.
log(i)
;//20;
//結合宣告提公升,等價於
var i;
//宣告提公升
var i;
//宣告提公升
i =20;
//按照順序執行語句
console.
log(i)
;<
/script>
相信你已經懂了什麼叫宣告提公升了
let 宣告的變數作用於塊級作用域,僅僅在自己的所在的{}中有效,脫離了{},該宣告銷毀。
if(true)
console.
log(i)
;//報錯
<
/script>
當 let 宣告的變數在函式外宣告,其作用域在整個 script 中,但它並不屬於 window 物件的屬性
let i =10;
function testlet()
testlet()
;<
/script>
function testlet()
testvar()
;<
/script>
在同乙個作用域中,不允許重複宣告同乙個變數
let i =10;
let i =20;
//報錯
console.
log(i)
;<
/script>
與 let 一樣,都是作用與塊級作用域,全域性不屬於 window 物件的屬性,不能進行冗餘宣告,這裡就不舉例了。說一下不同的
必須賦初值
const i;
//報錯
console.
log(i)
;<
/script>
不允許修改
const i =10;
i =20;
//報錯
console.
log(i)
;<
/script>
允許修改物件內部的屬性,但不允許直接重新賦值。
const person =
; person.name =
'jack'
; person.name =
'mark'
; console.
log(person.name)
;//'mark'
<
/script>
const person =
; person =
;//報錯
console.
log(person.name)
;<
/script>
var 、let 、const 都能賦任意型別的變數
var 宣告的範圍為函式作用域,而 let 和 const 宣告的範圍是塊級作用域(最大的區別)
var 全域性變數屬於 window 物件的屬性,而 let 與 const 不屬於
var 允許變數提公升,而 let 與 const 不允許
在同一作用域中 var 可以進行重複宣告,而 let 與 const 不允許。
相比於 let ,const 作用於常量必須賦初值且一旦宣告不允許改動,但作用於物件來說,則允許改變物件內的屬性值。
js關於變數宣告 var let const 區別
關於定義 宣告 變數 es6之前定義變數是用 var 那麼var有什麼問題嗎,如果但但從變數上來說是沒有問題的,var是variable的縮寫,英文翻譯是變數。var問題 1.汙染全域性 之前定義迴圈的方式 for var i 0 i 10 i alert i 有一天突然運營檔案,這個時候彈出的是 ...
面試官 說說var let const之間的區別
故心故心故心故心小故衝啊 在es5中,頂層物件的屬性和全域性變數是等價的,用var宣告的變數既是全域性變數,也是頂層變數 注意 頂層物件,在瀏覽器環境指的是window物件,在 node 指的是global物件 var a 10 console.log window.a 10 使用var宣告的變數存...
詳解git fetch與git pull的區別
git fetch和git pull都可以將遠端倉庫更新至本地那麼他們之間有何區別?想要弄清楚這個問題有有幾個概念不得不提。fetch head 是乙個版本鏈結,記錄在本地的乙個檔案中,指向著目前已經從遠端倉庫取下來的分支的末端版本。commit id 在每次本地工作完成後,都會做乙個git com...