当我们在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程
序中,同时出现多个同名函数时,浏览器会去执行最后一个函数。