1.函數執行順序
//定義式函數
function Fn1(){
alert("有預編譯");
}
//賦值式函數
function Fn2(){
alert("沒有預編譯");
}
//函數調用纔出發
Fn1();
function Fn1(){
alert("不報錯誤!");
}
Fn2();
function Fn2(){
alert("報錯,因爲Fn2沒有預編譯");
}
2.jsp裏js塊的執行順序
<script type="text/javascript">
Fn();
</script>
<script type="text/javascript">
function Fn(){
alert("Hello World!");
}
</script>
//看似可以但是報錯,在兩個塊裏不行,調換順序可以
3.重複定義函數會覆蓋前個同名函數
4.對於HTML標籤<body>內外函數的執行先後
<script type="text/javascript">
function fnOnLoad(){
alert("I am outside the Wall!");
}
</script>
<body onload="fnOnLoad();">
<script type="text/javascript">
alert("I am inside the Wall..");
</script>
</body>
//先彈出“I am inside the Wall..”;
//後彈出“I am outside the Wall!”
//外面的函數在body元素加載完才觸發,內部的會在它之前執行,body的回調函數
5.JavaScript是單線程
6.看似多線程誤區
function fn1(){
setTimeout(function(){
alert("我先調用")
},1000);
}
function fn2(){
alert("我後調用");
}
fn1();
fn2();
// 先彈出:“我後調用”,
// 1秒後彈出:“我先調用”
//ajax請求中數據處理函數也是這個道理
7.回調函數
常見的回調函數:onclick、onmouseo教程ver、onmousedown、onload等等瀏覽器事件的調用函數;還有Ajax異步請求數據的處理函數;setTimeOut延時執行、setInterval循環執行的函數等。
未完待續