JS中變數定義加var和不加var的區別

2021-08-14 16:29:40 字數 892 閱讀 1417

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 輸出...