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