首頁  >  文章  >  web前端  >  如何區別javaScript中定義變數有沒有var的區別實例詳解

如何區別javaScript中定義變數有沒有var的區別實例詳解

伊谢尔伦
伊谢尔伦原創
2017-07-18 10:11:151280瀏覽

關於定義變數時使用關鍵字var與否的區別,總結一下。

在函數內部,有var和沒var宣告的變數是不一樣的。有var聲明的是局部變量,沒var的,宣告的全域變量,所以可以藉此向外暴露介面東東。

使用var語句重複宣告語句是合法且無害的。如果重複聲明且帶有賦值,那麼就和一般的賦值語句沒差別。如果嘗試讀取沒有宣告過的變量,Js會報錯。 

JavaScript的函數作用域內,宣告的變數或內部函數,在函數體內都是可見的。意味著,函數在定義之前可能已經可用。函數定義有兩種方式,一種是函數定義表達式,一種是函數宣告語句。

函數宣告語句「被提前」到外部腳本或外部函數作用域的頂部,所以以這種方式宣告的函數,可以被再它定義之前出現的程式碼所呼叫。而函數定義表達式中,變數的宣告被提前了,但是給變數的賦值是不會提前的,所以,以表達式定義的函數在函數定義之前無法呼叫。

1.在函數作用域內 加var定義的變數是局部變量,不加var定義的就成了全域變數。
使用var定義:


var a = 'hello World';
function bb(){
 var a = 'hello Bill';
 console.log(a);  
}
bb()      //'hello Bill'
console.log(a);  //'hello world'

不使用var定義:


var a = 'hello World';
function bb(){
 a = 'hello Bill';
 console.log(a);  
}
bb()      //'hello Bill'
console.log(a);  //'hello Bill'

2.在全域作用域下,使用var定義的變數不可以delete,沒有var 定義的變數可以delete.也就說明隱含全域變數嚴格來說不是真正的變量,而是全域物件的屬性,因為屬性可以透過delete刪除,而變數不可以。

3.使用var 定義變數也會提升變數聲明,即
使用var定義:


function hh(){
 console.log(a);
 var a = 'hello world';
}
hh()      //undefined

不使用var定義:


function hh(){
 console.log(a);
 a = 'hello world';
}
hh()      //'a is not defined'

這就是使用var定義的變數的宣告提前。

4.在ES5的'use strict'模式下,如果變數沒有使用var定義,就會報錯。

以上是如何區別javaScript中定義變數有沒有var的區別實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn