JavaScript中變量的作用域詳解
一、變量的分類
在JavaScript中變量分為兩種:
- 全局變量
- 局部變量
二、變量的作用域
1、局部變量的作用域
局部變量:在函數內部定義的變量稱為局部變量,其作用域為該函數內部,在該函數外部不能被訪問。看下面的例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>局部變量作用域</title> <script> // 定義函數fn function fn(){ var a=5;// 定義局部變量 document.write(a); }; // 調用函數fn fn(); // 定義函數fn2 function fn2(){ document(a); }; // 調用函數fn2 fn2(); </script> </head> <body> </body> </html>
結果:
2、全局變量
全局變量:定義在函數外部的變量稱為全局變量,其作用域是整個JavaScript代碼塊。看下面的例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>全局變量作用域</title> <script> var number; // 全局變量 function fn(){ number=5; document.write("number的值是:"+number+"<br />"); }; function fn2(){ ++number; document.write("number的值是:"+number+"<br />"); } fn(); fn2(); </script> </head> <body> </body> </html>
結果:
註意:
a、如果在函數內定義瞭和全局變量相同名稱的局部變量,那麼在函數內部使用就近原則:即在函數內部局部變量起作用。
看下面的例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>全局變量作用域</title> <script> var number; // 全局變量 /* function fn(){ number=5; document.write("number的值是:"+number+"<br />"); }; function fn2(){ ++number; document.write("number的值是:"+number+"<br />"); } */ // 就近原則 function fn(){ var number="我是局部變量"; document.write("number的值是:"+number+"<br />"); }; function fn2(){ number="我是全局變量" document.write("number的值是:"+number+"<br />"); } fn(); fn2(); </script> </head> <body> </body> </html>
結果:
b、全局變量window
如果在定義變量的時候沒有使用var,那麼默認是全局變量,無論是在函數外部還是在函數內部定義變量。看下面的例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>全局變量作用域</title> <script> var number; // 全局變量 /* function fn(){ number=5; document.write("number的值是:"+number+"<br />"); }; function fn2(){ ++number; document.write("number的值是:"+number+"<br />"); } */ // 就近原則 /* function fn(){ var number="我是局部變量"; document.write("number的值是:"+number+"<br />"); }; function fn2(){ number="我是全局變量" document.write("number的值是:"+number+"<br />"); } fn(); fn2(); */ // windows // 相當於window.a a=12; function fn(){ // 相當於window.b b="我是window對象,是全局變量"; }; fn(); document.write("a="+a+"<br />"); document.write("b="+b+"<br />"); </script> </head> <body> </body> </html>
結果:
c、應盡量避免使用全局變量,以免團隊開發變量發生沖突。
以上所述是小編給大傢介紹的JavaScript中變量的作用域,希望對大傢有所幫助。在此也非常感謝大傢對WalkonNet網站的支持!
推薦閱讀:
- JavaScript中函數的防抖與節流詳解
- JavaScript 阻止超鏈接跳轉的操作方法(多種寫法)
- JavaScript自定義函數用法詳解
- JavaScript基礎語法與數據類型介紹
- jQuery的事件處理你知道多少