<!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() { i = '全局變量'; alert(i); } sayName(); // 9運行結果顯示undefined,因為輸出的是局部變量,而局部變量得初始化在輸出之后。 var i = '全局變量'; function sayName() { alert(i); var i = '局部變量'; } sayName(); </script> </head> <body> </body> </html>