js 函數定義的兩種方式以及事件綁定(掃盲)


一、事件(例如: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解釋程序會將其解釋為全局變量。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM