首頁  >  文章  >  web前端  >  javascript有沒有區塊級作用域

javascript有沒有區塊級作用域

WBOY
WBOY原創
2022-03-10 11:41:491979瀏覽

在JavaScript中,沒有區塊級作用域的概念。在區塊級語句中定義的變量,實際上是在包含函數中創建的,而不是在語句中創建的,可以將變量聲明放在函數體頂部,而不是將聲明靠近放在使用變量之處。

javascript有沒有區塊級作用域

本教學操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。

javascript有沒有區塊級作用域

Javascript沒有區塊級作用域的概念。這意味著在區塊級語句中定義的變量,實際上是在包含函數中而非語句中建立的。

程式碼段1:

var scope="global";  
function f(){   
    console.log(scope);  
    var  scope="local"  
    console.log(scope);  
}  
f();

  會輸出什麼?

  答案:undefined  local

  程式碼段2:

var scope="global";  
function f(){  
    var scope;  
    console.log(scope);  
    scope="local"  
    console.log(scope);  
}  
f();

  又會輸出什麼?

  答案:undefined  local

  程式碼段3:

var scope="global";  
function f(){  
    console.log(scope);  
}  
f();

  又會輸出什麼?

  答案:global

  透過以上三個例子,以下解釋「JavaScript沒有區塊級作用域,有函數作用域」這句話。

  在JavaScript中,由於函數作用域的特性,程式碼段1和程式碼段2是等價的,局部變數在整個函數體是中是有定義的,

也就是說,程式碼段1在函數體內的局部變數scope覆蓋了同名全域變量,並且只有在程式執行到var 語句的時候,局部變數scope才會被真正的

賦值。因此,上述過程等價於:將函數內的變數宣告「提前」至函數體頂部,同時變數初始化留在原來的位置:也就是程式碼段2。

  在具有區塊級作用域的程式語言中,在狹小的作用域裡讓變數宣告和使用變數的程式碼盡可能靠近彼此,通常來講,這是一個非常不錯的程式設計

習慣。由於JavaScript沒有區塊級作用域,因此,一些程式設計師刻意將變數宣告放在函數體頂部,而不是將宣告靠近放在使用變數之處。這種做法

使得他們的原始碼非常清楚地放映了知識的變數作用域。

相關推薦:javascript學習教學

以上是javascript有沒有區塊級作用域的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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