JavaScript作用域
JavaScript作用域
作用域是可訪問變數的集合。
在JavaScript中,物件和函式同樣也是變數。
在JavaScript中,作用域可訪問變數,物件,函式的集合。
作用域在函式內可以修改。
JavaScript區域性作用域
變數在函式內宣告,變數為區域性變數(區域性作用域)
區域性變數:只能在函式內部訪問。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <button onclick="myFunction(1,2)">試一試</button> <p id="demo"></p> </body> <script type="text/javascript"> function name() { //在此處宣告一個變數 var a = 10; //函式內可以呼叫 a } //此處(函式外)不能呼叫變數 a
//因為區域性變數只作用於函式內,所以不同的函式可以使用相同名稱的變數名
//區域性變數在函式開始執行時建立,函式執行完畢後,變數會自動銷燬
</script> </html>
JavaScript全域性變數
變數在函式外定義,即為全域性變數。
全域性變數有全域性作用域,網頁中所有指令碼和函式都可使用。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <button onclick="myFunction(1,2)">試一試</button> <p id="demo"></p> </body> <script type="text/javascript"> /* 在此處宣告一個全域性變數 */ var a = 10; function name() { //函式內可以呼叫 a } //此處也能呼叫變數 a </script> </html>
如果變數在函式內沒有宣告(沒有使用var關鍵字宣告)改變數為全域性變數。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <button onclick="myFunction(1,2)">試一試</button> <p id="demo"></p> </body> <script type="text/javascript"> function name() { /* 在此處宣告一個變數 */ a = 10; /* a沒有使用var關鍵字宣告,則預設為全域性變數 */ } </script> </html>
JavaScript變數生命週期
變數的生命週期在它的宣告時初始化。區域性變數在函式執行完畢後銷燬。全域性變數在頁面關閉後銷燬。
函式引數
函式引數只在函式內起作用,是區域性變數。
HTML中的全域性 變數
在HTML中,全域性變數是window物件,所有資料變數都屬於window物件。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <button onclick="myFunction(1,2)">試一試</button> <p id="demo"></p> </body> <script type="text/javascript"> function name() { a = 10; } //此處可使用window.a呼叫變數 a </script> </html>
全域性變數或者函式可以覆蓋window物件的變數或者函式。區域性變數包括window物件,可以覆蓋全域性變數和函式。
在es6中提供了let關鍵字和const關鍵字
let的宣告方式與var相同,用let來代替var宣告變數,就可以把當前變數限制在程式碼塊中。
使用const宣告的是常量,其值一旦被設定便不可被更改。
———————— end ———————–