關於Javascript函數的宣告時機

Javascript燈謎時間又來了...

<html><body>
<script type="text/javascript">
test("Before");
function test(m) 
{
    alert(m);
}
test("After");
</script>
</body></html>

以上的Code,Before與After都會出現嗎? 在我印象中,Javascript函數一定要先宣告才能呼叫,但顯然有點誤差! 在上面的例子中,test("Before");與test("After");都會順利執行!

不過,注意到了嗎? 我是說有誤差,而非記錯了。原因是函數宣告前呼叫的狀況,只適用在同一個Script Block下。再來看一個例子:

<html><body>
<input type="button" onclick="test('OK')" value="test">
<script type="text/javascript">
test("Before Block");
</script>
<script type="text/javascript">
function test(m) 
{ alert(m); }
</script>
<script type="text/javascript">
test("After Block");
</script>
</body></html>

在以上的例子中,test("Before Block");被放在之前的Script Block而導致出錯,但後方Script Block的test("After Block");則OK。順手再測了宣告函數前就標成<INPUT>的onclick事件,也是可行的。

Goggle到一篇不錯的文章,順便記下來。

歡迎推文分享:
Published 12 December 2007 10:58 PM 由 Jeffrey
Filed under: ,
Views: 6,693



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<December 2007>
SunMonTueWedThuFriSat
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication