語言
JScript是微軟的一種專門設計用於Web頁面中的腳本語言。它堅持了ECMAScript標準並且主要是微軟對應於Netscape早些出現並被廣泛使用的JavaScript所出的一個語言。 寬鬆類型意味著您不必顯示定義變數的數據類型。事實上 JScript 更進一步。您無法在JScript上明確地定義數據類型。此外,在大多數情況下,JScript 將根據需要自動進行轉換。例如,如果將一個數值添加到由文本組成的某項(一個字元串),該數值將被轉換為文本。
功能
JScript 8.0是 Microsoft 實現 ECMA 262 語言的新一代版本。通過將先前版本的 JScript 功能集與基於類的語言的最佳功能相結合,JScript 8.0 包含了這兩個領域的精華。JScript 8.0 的改進內容(正在結合 ECMAScript 第 4 版開發研製)包括:真正的編譯代碼、類型化和無類型變數、後期和早期綁定、類(具有繼承、函式重載、屬性訪問器,等等)、包、跨語言支持,以及對 .NET Framework 的完全訪問。
新增功能
JScript 8.0 是一種真正的面向對象的腳本語言。儘管 JScript 8.0 可以使用類、類型和其他高級語言功能來編寫可靠的應用程式,但它仍然保留著其“腳本”特色,支持無類型編程、expando 函式和類、動態代碼執行(使用 eval)等。
JScript 8.0 不僅是一種無類型語言,還可以用作一種強類型化的語言。在先前版本中,JScript 鬆散的類型化結構意味著變數採用賦給它們的值的類型。實際上,在先前版本中用戶不能聲明變數的數據類型。JScript 8.0 允許對變數進行類型批註,這與先前版本的 JScript 相比提供了更大的靈活性。這種方法將變數綁定到某個特定的數據類型,這樣該變數就只能存儲這種類型的數據。
在程式語言中,強類型有許多優勢。除了當所使用的數據類型恰好適合正在使用的數據時獲得的益處外,還有其他幾點好處:
提高執行速度
運行時/編譯時類型檢查
自記錄代碼
最後,JScript 8.0 並不是另一種程式語言的簡單版本,也不是對任何內容的簡化。而是一種套用非常廣泛的現代腳本語言。
編寫
與其他許多程式語言一樣, Microsoft JScript 是用文本方式編寫的,並被組織成為語句、由相關的語句集組成的塊、以及注釋。在一條語句內可以使用變數、比如字元串和數字(稱為“文字”)的立即數、以及表達式。
集合
語句
一條 Jscript 語句相當於英語中的一個完整句。Jscript 語句將表達式組合起來,完成一個任務。
一條語句由一個或多個表達式、關鍵字或者運算符(符號)組成。典型地,一條語句寫一行,儘管一條語句可以超過兩行或更多行。兩條或更多條語句也可以寫在同一行上,語句之間用分號“;”隔開。通常,每一新行開始一條新語句。不過顯式地終止語句是一個好方法。這是用分號 (;)來實現的,分號是 JScript 語句的終止字元。下面給出 Jscript 語句的兩隔示例。
aBird = "Robin"; //將文本“Robin”賦值給變數aBird
var today = new Date(); // 將今天的日期賦值給變數today
用大括弧({})括起來的一組 JScript 語句稱為一個語句塊。分組到一個語句塊中的語句通常可當作單條語句處理。這就是說在 JScript 期望有一條單個語句的大多數地方可以使用語句塊。應該注意以 for 和 while 打頭的循環語句是例外情況。注意,語句塊中的原始語句以分號結束,但語句塊本身並不以分號結束。
在函式和條件語句中使用語句塊
通常,在函式和條件語句中使用語句塊。注意,Jscript 與 C++ 以及其他某些語言不同,它不認為語句塊是一個新的範圍;只有函式創建新範圍。在下面的示例中,第一條語句開始定義一個函式,該函式包含一個五條語句組成的語句塊。語句塊後的三條語句沒有用大括弧括起來;這些語句不是一個語句塊,所以就不是函式定義的一部分。
function convert(inches) {
feet = inches / 12; // 這五條語句屬於一個語句塊。
miles = feet /5280;
nauticalMiles = feet / 6080;
cm = inches * 2.54;
meters = inches / 39.37;
}
km = meters / 1000; // 這三條語句不在語句塊內。
kradius = km;
mradius = miles;
注釋
單行的 JScript 注釋以一對正斜槓(//)開始。下面給出一個單行注釋的示例。
aGoodIdea = "Comment your code thoroughly."; // 這是一個單行注釋。
多行注釋以一個正斜槓加一個星號的組合(/*)開始,並以其逆向順序 (*/)結束。
/*
這是一個用來解釋前面的代碼語句的多行注釋。
該語句將一個值賦給 aGoodIdea變數。
用引號包含的這種值稱為一個文字。
文字顯式並直接包含信息;
而不是簡接地引用信息。
(引號不屬於該文字的內容。)
*/
注意事項
如果您試圖將一個多行注釋插入到另一個中,JScript 不能按正常的方式解釋生成的多行注釋。標明嵌入的多行注釋結束的 */ 被認為是整個多行注釋的結尾。這就意味著嵌入多行注釋之後的文本不再被認為是注釋;相應地,它將被解釋為 JScript 代碼,並會產生語法錯誤。
建議將所有的注釋寫為單行注釋的語句塊。這樣您以後就能夠將大段的代碼與多行注釋區分開。
//這是另一種多行注釋,寫成一系列單行注釋。
// 在執行完該語句後,可以使用 aGoodIdea變數的名字來引用其內容,
// 如下一條語句那樣,即採用連線操作將字元串文字添加到
// aGoodIdea變數,以創建一個新的變數。
var extendedIdea = aGoodIdea + " You never know when you'll have to figure out what it does.";
賦值和相等
JScript 語句中使用等號 (=)給變數賦值:等號是賦值運算符。=運算符左邊的操作項總是一個 Lvalue。Lvalue 可以是:
變數,
數組元素,
對象屬性。
= 運算符右邊的操作項總是一個 Rvalue。Rvalues 可以是任何類型的一個任意值,包括表達式的值。下面給出一個 JScript賦值語句的示例。
anInteger = 3;
Jscript編譯器解釋本語句的意義為:“將 3 賦給變數anInteger”或“anInteger 的值為 3”。
確定您理解了 =運算符(賦值)和 == 運算符(相等)的差異。在比較兩個值是否相等時,應使用兩個等於號 (==)。這些內容將在 控制程式的流程 中詳細介紹。
表達式
JScript表達式是指 JScript解釋器能夠計算生成值的 JScript “短語”。這個值可以是任何有效的 JScript 類型 — 數字、字元串、對象,等等。最簡單的表達式是文字。下面給出 JScript 文字表達式的一些示例。
3.9 // 數字文字
"Hello!" // 字元串文字
false //布爾文字
null // 文字空值
{x:1, y:2} // 對象文字
[1,2,3] //數組文字
function(x){return x*x;} // 函式文字
更多複雜的表達式中包含變數、函式、函式調用以及其他表達式。可以用運算符將表達式組合,創建複合表達式。運算符可以是:
+ // 加法
- // 減法
* // 乘法
/ // 除法
下面給出 JScript 複合表達式的一些示例。
var anExpression = 3 * (4 / 5) + 6;
var aSecondExpression = Math.PI * radius * radius;
var aThirdExpression = aSecondExpression + "%" + anExpression;
var aFourthExpression = "(" + aSecondExpression + ") % (" + anExpression + ")";