當我們在JavaScript中,要執行一
個函數往往都是這樣寫
function aa(){
alert("first function");
};
aa();
有人會問能否再簡化呢?答案是肯定的!只要你愿意我們還可以通過括號直
接調用函數
(function
aa(){
alert("(function)();");
})();
當然,也又別的方法,試試在函數前寫上+或
者-吧!
+function
aa(){
alert("+function();");
}();
這是,我們瀏覽器中的代碼應該是這樣的:
<html>
<head>
<title>JavaScript 高級編程 之 同名函數的執行順序</title>
<script language="javascript"
type="text/javascript">
function aa(){
alert("first function");
};
aa();
(function aa(){
alert("(function)();");
})();
+function aa(){
alert("+function();");
}();
</script>
</head>
<body>
</body>
</html>
現在讓我們來想一想瀏覽器會出現怎樣的結果?
坐在后排的那哥們兒舉手了。聽聽他怎么說,他說:
“瀏覽器會按照1.first function 2.(function)();
3.+function(); 方式執行”
我肯定一定會有很多人這樣回答。好的,你可以坐下了。還是讓我們去看看
執行的結果吧!
瀏覽器結果: 1.+function();
2.(function)(); 3.+function(); 真是不可思議,為什么呢?
難道瀏覽器會認為在函數前面寫+或者-會
讓函數的執行級別更高?事實并非如此!下面我們再寫一個函數,便可以證明這個結論是錯誤的。
function aa(){
alert("last function");
};
或許,我們還會有帶參的函數需要執行。
function aa(msg){
alert(msg);
}
aa("hello
topcss!");
好了,我們再去看看瀏覽器是否執行最后一個函數,也就是帶參的函數呢。
的確,事實正是如此,她執行了最后一個函數。太棒了。
現在,我們得出了一個結論:
當我們在一個JavaScript程
序中,同時出現多個同名函數時,瀏覽器會去執行最后一個函數。