1.在函式作用域內 加var定義的變數是區域性變數,不加var定義的就成了全域性變數。
使用var定義
var a = 'hello world';
function
bb()
bb()
// 'hello bill'
console.log
(a);
// 'hello world'
不使用var定義
var e = 'hello world';
function
cc()
cc() // 'hello bill'
console.log(e) // 'hello bill'
2.在全域性作用域下,使用var定義的變數不可以delete,沒有var 定義的變數可以delete.也就說明隱含全域性變數嚴格來說不是真正的變數,而是全域性物件的屬性,因為屬性可以通過delete刪除,而變數不可以。
3.使用var 定義變數還會提公升變數宣告,即
使用var定義:
function
hh()
hh() //undefined
不使用var定義:
function
hh()
hh() // 'a
isnot defined'
這就是使用var定義的變數的宣告提前。
4.在es5
的'use strict'
模式下,如果變數沒有使用var定義,就會報錯
。
js中定義變數加var和不加var的區別
這個問題其實我在面試的時候有被問到過,當時我記得我回答的很模糊,面試官看到我好像不太清楚,又問我是不是可以不加var定義變數。正好昨天做專案的時候想到這個問題,覺得這種細節上的問題才是拉開差距的。js中定義變數有兩種情況 注意在方法外不加var定義變數需對其進行賦值,否則出現xx is not de...
JS變數前不加var的影響
再次強調下變數的作用域 給小白看的 js中變數作用域可分為 全域性變數 和 區域性變數 全域性變數 宣告在函式之外的變數 區域性變數 宣告在函式體中的變數,並且只能在當前函式體內訪問 但有一種情況,我們在定義變數時可能會忘記加變數名前面的 var 關鍵字。這樣會發生什麼呢?我們做下實驗,如下 fun...
js中let和var定義變數的區別
let變數之前沒見過,剛遇到,探 竟。以下 function function function function console.log vartest 輸出 vartest changed.內部 中宣告的vartest變數覆蓋外部的lettest宣告 console.log lettest 輸出...