標籤:lang char nbsp undefined jquer 全域變數 相同 script 區別
<!DOCTYPE html><html><head lang="en"> <meta charset="utf-8"/> <title></title> <script src="../js/jquery-1.10.2.js"></script> <script>// 1 i為全域變數 輸出全域變數 function myName() { i = ‘全域變數‘; } myName(); function sayName() { alert(i); } sayName();// 2 i為局部變數 運行出錯 顯示i未定義 function myName() { var i=‘局部變數‘; } myName(); function sayName() { alert(i); } sayName();// 3 將1中的myName()去掉 運行出錯 顯示i未定義,雖然聲明了函數,但是沒有調用函數,函數中的i的賦值失效。 function myName() { i = ‘全域變數‘; } function sayName() { alert(i); } sayName();// 4 將1中的myName()放到sayName()的下面 運行出錯 顯示i未定義,雖然聲明了函數 調用了函數 但是因為javascript調用的函數自上而下運行,// 當運行sayName時並沒有運行myName(). function myName() { i = ‘全域變數‘; } function sayName() { alert(i); } sayName(); myName(); // 5 運行結果顯示是全域變數。雖然變數名稱相同,但是一個是全域變數,一個是局部變數,有著本質的區別,局部變數只能在本函數之內使用 var i = ‘全域變數‘; function myName() { var i = ‘局部變數‘; } myName(); function sayName() { alert(i); } sayName(); // 6 將5的局部變數改成全域變數,運行結果顯示改變的全域變數 var i = ‘全域變數‘; function myName() { i = ‘改變的全域變數‘; } myName(); function sayName() { alert(i); } sayName(); // 7 運行結果顯示undefined,因為代碼的執行順序是從上到下的,在輸出i之前並只定義了i,沒有對i初始化。 var i; function sayName() { alert(i); i = ‘全域變數‘; } sayName();// 8 運行結果顯示全域變數,在輸出之前初始化i就沒有問題了 var i; function sayName() { alert(i); i = ‘全域變數‘; } sayName();// 9運行結果顯示undefined,因為輸出的是局部變數,而局部變數得初始化在輸出之後。 var i = ‘全域變數‘; function sayName() { alert(i); var i = ‘局部變數‘; } sayName(); </script></head><body></body></html>
總結javascript中的全域變數和局部變數的區別以及聲明函數和調用函數的區別