一、事件(例如:onclick)綁定的函數定義放在jsp前面和放后面沒影響
二、
1 $(function() { 2 function func(){}; 3 })
onclick通過如下方式綁定事件到jsp中:onclick = "func();"
由於func()在函數中聲明,是局部變量,onclick找不到func(),綁定失敗。
三、
function func(){}; onclick = "func();"
這樣綁定沒有問題,因為func()此時是全局變量,不在任何函數中。
四、
func = function(){ }; onclick = "func();"
這樣綁定也沒問題,另一種函數定義方式,也不在任何函數中,屬於全局變量。
五、
$(function() { func = function(){ }; }); onclick = "func();"
這可以綁定成功,js中,在函數內部,不加var聲明的變量是屬於全局變量,所以這里func雖然放在函數中,卻是全局變量,onclick可以正常觸發。
六、
$(function { var func = function() { }; }); onclick = "func();"
這綁定不成功,可以和情況五比較,func變量前加了var,變成了函數內部的局部變量,所以onclick訪問不到func函數,不能觸發。
七、全局和局部變量:
1、外部的為全局,內部的為局部變量。
2、加var為局部變量(在方法內),不加var為全局變量(當方法內有一次使用后)
<script type="text/javascript"> var golbe="global"; test(); function test(){ var local="local"; document.write(golbe); document.write(local); } document.write(golbe); document.write(local); </script>
在上面的test方法內,當把local變量的var去掉后,local就變成了全局變量,但是在局部不使用local,則這個local作為全局是無效的。
為了驗證這點,我把test方法內部唯一使用local變量的這句代碼注釋掉.發現在外部也打印不出來了。
總結:全局變量可以不聲明var 函數內變量必須聲明var,在定義全局變量時加或不加var關鍵字沒什么影響;但在定義局部變量時如果不加var關鍵字javascript解釋程序會將其解釋為全局變量。
