網頁中的JavaScript和基本文法
應用JavaScript到一個網頁中是非常容易的; 所有你要做的就是使用這個标本标簽:
<script type="text/javascript">
// Your code here
</script>
對于老版本的浏覽器,或如果你想使用嚴格的 XHTML ( HTML的最新版本) 代替過渡的XHTML,
你需要把這段代碼加上注釋,確定使用者代理不在網頁中顯示它或試着把它當作HTML标示來解析。 給代碼加注釋有兩種不同的文法。 對于 HTML 文檔和過渡的XHTML,你使用标準的HTML注釋:
<!--
-->
在嚴格的XHTML中,你需要使用CDATA注釋文法為你的代碼加注釋——然而,最好不要在嚴格的XHTML文檔中添加任何JavaScript,而是把它放到自己的文檔中。在第三章有更多關于這方面的說明。
<script type="text/javascript"><!--//--><![CDATA[//><!—
//--><!]]></script>
技術上講,在HTML文檔的任何地方加入JavaScript都是做得到的,然後浏覽器就會解釋它。可是, 在流行的腳本中,有許多理由說明為什麼這樣做是個非常糟糕的主意。盡管到目前為止,我們會在文檔的主體中加入JavaScript例子使你直接地可以看到你的第一個腳本在幹什麼。 這樣會比第三章中等待你的流行和進階技術更容易幫助你的熟悉JavaScript。
■注解:也有一個與script“相反”的标簽—noscript,它允許你添加一些隻有在JavaScript不可用的情況下才會顯示的内容。然而,noscript在XHTML 和嚴格的HTML中是不贊成使用的。如果你建立的JavaScript是友好的,就沒有必要使用它。
在我們進一步探讨之前,先來讨論一下JavaScript基本文法:
l // 表示目前行的其它部分是注釋并且代碼是不會執行的,是以解釋器不會試着運作它。注釋是一個把注解放到代碼中的一個便捷方式,它可以提示我們這段代碼打算作什麼,或者幫助其它人閱讀代碼以了解代碼是幹什麼的。
l /* 表示一個多行注釋的開始。
l */ 表示一個多行注釋的結束。多行注釋同樣是有用的,如果你想阻止某段代碼被執行但是又不想永久的删除它。如果你對一個代碼段有疑問,例如,你不能确定哪些行有問題,那麼你可以每次注釋掉它的一部分,進而分離出問題來。
l 大括号 ({和})被用來表示一個代碼段。它們確定大括号中間的所有行都被當作一個代碼段來看待。當我們在讨論像if或for這樣的結構語句和函數時,你會看到大括号更多相關的應用。
l 分号或換行定義了語句的結束,一條語句就是一個單行指令。在實際應用中,分号是可以選擇的。但是在語句結束的時候,使用它們來使代碼更清晰條理是個好主意,因為這樣做可以使你的代碼更容易讀和調試(盡管你可以把許多語句放到一行中,但是最好還是把它們放到獨立的行中以使代碼更容易讀)。在大括号的後面不需要使用分号。
我們來把這個語句加到運作的代碼段中:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html dir="ltr" lang="en">
<head>
<body>
<script type="text/JavaScript">
// One-line comments are useful for reminding us what the code is doing
/*
This is a multiline comment. It's useful for longer comments and
also to block out segments of code when you're testing
*/
Script starts here. We're declaring a variable myName, and assigning to it the
value of whatever the user puts in the prompt box (more on that in Chapter
2), finishing the instruction with a semicolon because it is a statement
var myName = prompt ("Enter your name","");
// If the name the user enters is Chris Heilmann
if (myName == "Chris Heilmann")
{
// then a new window pops up saying hello
alert("Hello Me");
}
// If the name entered isn't Chris Heilmann
else
// say hello to someone else
alert("hello someone else");
</body>
</html>
依據以前的JavaScript經驗,你會發現一些代碼不起作用了。現在所有的事情就是要弄清楚注釋是怎麼使用的、代碼段是什麼和為什麼一些語句的結尾有個分号。如果你喜歡,你可以運作這段代碼:隻要把它複制到HTML網頁中,使用.html字尾儲存文檔,按後在你的浏覽器中打開它。
盡管一些像if和else的語句跨越不止一行而且包含其它語句,但它們讓被看成是一個語句,它們的後面不需要加分号。JavaScript解釋器知道在if語句後面的哪幾行語句應該被當作一個代碼塊來處理,因為有大括号{}。雖不是強制的,但是把大括号内面的代碼進行縮進處理是個很不錯的注意。這可以使閱讀和調試更容易。我們會在下一章中讨論變量和條件語句(if和else)。
執行代碼
浏覽器從上到下來讀取頁面,是以代碼執行的順序取決于腳本塊的順序。一個腳本塊是指 <script> 和</script>之間的代碼。(同樣需要注意到,不隻是浏覽器可以閱讀我們的代碼,一個網站的使用者也可以檢視你的代碼,是以不要把一些保密的資訊或者敏感的内容放到内面。)
在下面的例子中有三個腳本塊。
alert( 'First script Block ');
alert( 'First script Block - Second Line ');
</head>
<h1>Test Page</h1>
alert( 'Second script Block' );
<p>Some more HTML</p>
alert( 'Third script Block' );
function doSomething() {
alert( 'Function in Third script Block' );
如果你試着運作一下它,你會首先看到第一個腳本塊中的alert()視窗,顯示着消息:
First script Block
緊跟着的是第二行中的下一個alert()視窗,顯示着消息:
First script Block - Second Line.
解釋其會繼續往下執行來到第二個腳本塊,在這裡alert函數會顯示這樣一個視窗:
Second script Block
接着其後包括alert()語句的第三個腳本塊會顯示:
Third script Block
盡管最下面幾行的函數中存在另一個alert語句,但是它不會執行并顯示消息。這是因為它在函數定義的内面(function doSomething()), 函數内面的代碼隻有在函數被調用的時候才會執行。
我們會在第三章中對函數進行深入的讨論,但我在這裡介紹它們是因為不了解函數很難對JavaScript做更深入進一步的了解。一個函數就是一個被命名的、可重用的代碼塊,它被成對的大括号括起來,你可以用來完成一個特定的任務。 JavaScript包含許多函數,我們可以直接使用來完成一些任務如顯示消息給使用者。合理的使用函數可以避免一個程式員重複代碼的編寫。
我們同樣可以建立自己的函數,在前面的代碼段中我們就已經建立了一個。假定我們建立了一些代碼,它們可以在某個元素裡向網頁中寫一個消息。 我們可能需要在不同的情況下重複的使用它。當然我們可以在需要使用它們的地方通過複制粘貼代碼段來實作,但是這種方法使代碼過于冗長; 如果同樣的代碼段在一個頁面中出現三四次,那麼它同樣很難了解和調試。 我們可以把這段列印消息的代碼封裝到一個函數中來替代,然後使用參數來給函數傳遞運作需要的消息。一個函數也可以為調用它的代碼傳回一個值。
調用函數,你可以簡單的在它的名字後寫個括号:()。(注——你可以使用括号來傳遞參數。但是在沒有參數的時候,你仍然必須使用括号。)但是你不能調用你想象的函數,必須是腳本已經建立的。我們可以如下的方式,通過把它添加到第三個代碼塊中來調用它:
alert( 'Third script Block ');
function doSomething(){
alert( 'Function in Third script Block ');
// Call the function doSomething
doSomething();
到目前為止,在這章中我們已經從JavaScript語言的正反兩方面讨論了它,明白了一些文法規則,學習了這種語言的一些主要組成部分(雖然隻是簡要地),并運作了一些JavaScript代碼。你已經接觸到了相當多的東西。在我們在下一章中繼續對JavaScript語言作更詳細的講解前,讓我們先來讨論一下成功的JavaScript開發的關鍵點:對象
本文轉自 牛海彬 51CTO部落格,原文連結:http://blog.51cto.com/newhappy/76842,如需轉載請自行聯系原作者