成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《JavaScript 闖關(guān)記》之語法

xiangzhihong / 1374人閱讀

摘要:的語法大量借鑒了及其他類語言如和的語法。也就是說,關(guān)鍵字變量函數(shù)名和所有的標(biāo)識(shí)符都必須采取一致的大小寫形式。中的字面量有字符串?dāng)?shù)字布爾值對(duì)象數(shù)組函數(shù)正則表達(dá)式,以及特殊的值。這是為了不破壞語法而特意選定的語法。

JavaScript 的語法大量借鑒了 C 及其他類 C 語言(如 Java 和 Perl)的語法。因此,熟悉這些語言的開發(fā)人員在接受 JavaScript 更加寬松的語法時(shí),一定會(huì)有種輕松自在的感覺。本章主要按照 ECMAScript 3 介紹這門語言的基本概念,并就 ECMAScript 5 的變化給出說明。

字符集

JavaScript 程序是用 Unicode 字符集編寫的,Unicode 是 ASCII 和 Latin-1 的超集,并支持地球上幾乎所有在用的語言。ECMAScript 3 要求 JavaScript 的實(shí)現(xiàn)必須支持 Unicode 2.1及后續(xù)版本,ECMAScript 5 則要求支持 Unicode 3及后續(xù)版本。

擴(kuò)展閱讀「Unicode 與 JavaScript 詳解」
http://www.ruanyifeng.com/blo...

區(qū)分大小寫

JavaScript 是區(qū)分大小寫的。也就是說,關(guān)鍵字、變量、函數(shù)名和所有的標(biāo)識(shí)符(identifier)都必須采取一致的大小寫形式。比如,關(guān)鍵字 while 必須寫成 while,而不能寫成 While 或者 WHILE。同樣,onlineOnline、OnLine、ONLINE 是4個(gè)不同的變量名。

但需要注意的是,HTML 并不區(qū)分大小寫。由于它和客戶端 JavaScript 聯(lián)系緊密,因此這點(diǎn)區(qū)別很容易混淆。許多客戶端 JavaScript 對(duì)象和屬性與他們所表示的 HTML 標(biāo)簽和屬性名相同。在 HTML 中,這些標(biāo)簽和屬性名可以使用大寫也可以是小寫,而在 JavaScript 中則必須是小寫。例如,在 HTML 中設(shè)置事件處理程序時(shí),onclick 屬性可以寫成 onClick,但在 JavaScript 代碼中,必須使用小寫的 onclick。

注釋

JavaScript 使用 C 風(fēng)格的注釋,包括單行注釋和塊級(jí)注釋。單行注釋以兩個(gè)斜杠 // 開頭,塊級(jí)注釋以一個(gè)斜杠和一個(gè)星號(hào) /* 開頭,以一個(gè)星號(hào)和一個(gè)斜杠 */ 結(jié)尾。下面都是合法的 JavaScript 注釋:

// 這里是單行注釋

/*
 *  這里是塊級(jí)注釋
 *  也叫多行注釋
 */

雖然上面注釋中的第二和第三行都以一個(gè)星號(hào)開頭,但這不是必須的,純粹是為了提高注釋的可讀性(這種格式在企業(yè)級(jí)應(yīng)用中極其常見)。

字面量

所謂字面量(也可稱直接量,Literal values),就是程序中直接使用的數(shù)據(jù)值。字面量只代表自身,不存儲(chǔ)在特定位置。JavaScript 中的字面量有:字符串、數(shù)字、布爾值、對(duì)象、數(shù)組、函數(shù)、正則表達(dá)式,以及特殊的 null 值。

"hello world"   // 字符串
123             // 數(shù)字
1.2             // 小數(shù)
true            // 布爾值
false           // 布爾值
/javascript/gi  // 正則表達(dá)式
null            // 空
{ name: "stone", age: 20}       // 對(duì)象
[ 1, 2, 3, 4, 5, 6, 7, 8 ]      // 數(shù)組
function(){ console.log("good"); }    // 函數(shù)

擴(kuò)展閱讀「undefined不是字面量」
http://www.cnblogs.com/ziyunf...

嚴(yán)格模式

在 ECMAScript 5 引入了嚴(yán)格模式(strict mode)的概念。嚴(yán)格模式是為 JavaScript 定義了一種不同的解析與執(zhí)行模式。在嚴(yán)格模式下,ECMAScript 3 中的一些不確定的行為將得到處理,而且對(duì)某些不安全的操作也會(huì)拋出錯(cuò)誤。要在整個(gè)腳本中啟用嚴(yán)格模式,可以在頂部添加如下代碼:

"use strict";

這行代碼看起來像是字符串,而且也沒有賦值給任何變量,但其實(shí)它是一個(gè)編譯指示(pragma),用于告訴支持的 JavaScript 引擎切換到嚴(yán)格模式。這是為了不破壞 ECMAScript 3 語法而特意選定的語法。

在函數(shù)內(nèi)部的第一行包含這條編譯指示,也可以指定函數(shù)在嚴(yán)格模式下執(zhí)行:

function doSomething(){
    "use strict"; 
    // 函數(shù)體
}

嚴(yán)格模式下,JavaScript 的執(zhí)行結(jié)果會(huì)有很大不同,因此本課程會(huì)隨時(shí)指出嚴(yán)格模式下的區(qū)別。

標(biāo)識(shí)符

所謂標(biāo)識(shí)符,就是指變量、函數(shù)、屬性的名字,或者函數(shù)的參數(shù)。JavaScript 標(biāo)識(shí)符必須以字母、下劃線(_)或美元符號(hào)($)開始,后續(xù)的字符可以是字母、數(shù)字、下劃線或美元符號(hào)(數(shù)字是不允許作為首字符出現(xiàn)的)。下面是合法的標(biāo)識(shí)符:

my_variable_name, v12345, _dummy, $str888

標(biāo)識(shí)符中的字母可以包含擴(kuò)展的 ASCII 或 Unicode 字母字符(如 π),但不推薦這樣做。按照慣例,JavaScript 標(biāo)識(shí)符采用駝峰大小寫格式,也就是第一個(gè)字母小寫,剩下的每個(gè)有意義的單詞的首字母大寫,例如:

firstSecond, myCar, doSomethingImportant
關(guān)鍵字和保留字

ECMAScript 3 描述了一組具有特定用途的關(guān)鍵字,這些關(guān)鍵字可用于表示控制語句的開始或結(jié)束,或者用于執(zhí)行特定操作等。按照規(guī)則,關(guān)鍵字是語言保留的,不能用作標(biāo)識(shí)符。以下是 ECMAScript 3 的全部關(guān)鍵字:

break       delete      function    return      typeof
case        do          if          switch      var
catch       else        in          this        void
continue    false       instanceof  throw       while
debugger    finally     new         true        with
default     for         null        try

ECMAScript 3 還將 Java 的所有關(guān)鍵字都作為自己的保留字。盡管保留字還沒有任何特定的用途,但他們有可能在將來被用作關(guān)鍵字:

abstract    double      goto        native      static
boolean     enum        implements  package     super
byte        export      import      private     synchronized
char        extends     int         protected   throws
class       final       interface   public      transient
const       float       long        short       volatile

ECMAScript 5 把非嚴(yán)格模式下的保留字縮減為:

class           enum            extends         super
const           export          import

ECMAScript 5 在嚴(yán)格模式下的保留字為:

implements      package         public
interface       private         static
let             protected       yield

注意,letyield 是 ECMAScript 5 新增的保留字,其他保留字都是 ECMAScript 3 定義的。為了保證兼容性,任何時(shí)候都不建議使用 ECMAScript 5 新增的保留字 letyield 。

ECMAScript 還預(yù)定義了很多全局變量和函數(shù),也應(yīng)當(dāng)避免把它們用作標(biāo)識(shí)符:

arguments           Error           Math            RegExp
Array               eval            NaN             String
Boolean             EvalError       Number          SyntaxError
Date                Function        Object          TypeError
decodeURI           Infinity        parseFloat      undefined
decodeURIComponent  isFinite        parseInt        URIError
encodeURI           isNaN           RangeError
encodeURIComponent  JSON            ReferenceError

JavaScript 的具體實(shí)現(xiàn)可能定義獨(dú)有的全局變量和函數(shù),每一種特定的 JavaScript 運(yùn)行環(huán)境都有自己的一個(gè)全局屬性列表,這一點(diǎn)是需要牢記的。

可選的分號(hào)

和其他許多變成語言一樣,JavaScript 使用分號(hào)(;)將語句分隔開。這對(duì)增強(qiáng)代碼的可讀性和整潔性是非常重要的。缺少分隔符,一條語句的結(jié)束就成了下一條語句的開始,反之亦然。如果語句各自獨(dú)占一行,通??梢允÷哉Z句之間的分號(hào)(程序結(jié)尾或花括號(hào) } 之前的分號(hào)也可以省略)。

var sum = a + b     // 即使沒有分號(hào)也是有效的語句,不好的寫法
var diff = a - b;   // 有效的語句,好的寫法

雖然語句結(jié)尾的分號(hào)不是必須的,但請(qǐng)任何時(shí)候都不要省略它。因?yàn)榧由线@個(gè)分號(hào)可以避免很多錯(cuò)誤,開發(fā)人員也可以放心地通過刪除多余的空格來壓縮 JavaScript 代碼。另外,加上分號(hào)也會(huì)在某些情況下增進(jìn)代碼的性能,因?yàn)檫@樣解析解就不必再花時(shí)間推測(cè)應(yīng)該在哪插入分號(hào)了。

關(guān)卡

請(qǐng)判斷以下代碼是否有效?如果有效請(qǐng)給出結(jié)果,如果無效請(qǐng)說明原因。

// 挑戰(zhàn)一
var class = "person";
console.log(class);     // ???
// 挑戰(zhàn)二
var Class = "person";
console.log(class);     // ???
// 挑戰(zhàn)三
var True = false;
console.log(True);      // ???
// 挑戰(zhàn)四
var true = false;
console.log(True);      // ???
// 挑戰(zhàn)五
var $_$ = "stone";
console.log($_$);       // ???
// 挑戰(zhàn)六
var 00_name = "stone";
console.log(00_name);   // ???
// 挑戰(zhàn)七
var Array = "null";
console.log(Array);     // ???
// 挑戰(zhàn)八
var undefined = "null";
console.log(undefined); // ???
// 挑戰(zhàn)九
var result = 1 + 2
+ 3 + 4
console.log(result);    // ???
更多

關(guān)注微信公眾號(hào)「劼哥舍」回復(fù)「答案」,獲取關(guān)卡詳解。
關(guān)注 https://github.com/stone0090/javascript-lessons,獲取最新動(dòng)態(tài)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90911.html

相關(guān)文章

  • JavaScript 闖關(guān)

    摘要:對(duì)象數(shù)組初始化表達(dá)式,闖關(guān)記之上文檔對(duì)象模型是針對(duì)和文檔的一個(gè)。闖關(guān)記之?dāng)?shù)組數(shù)組是值的有序集合。數(shù)組是動(dòng)態(tài)的,根闖關(guān)記之語法的語法大量借鑒了及其他類語言如和的語法。 《JavaScript 闖關(guān)記》之 DOM(下) Element 類型 除了 Document 類型之外,Element 類型就要算是 Web 編程中最常用的類型了。Element 類型用于表現(xiàn) XML 或 HTML 元素...

    mj 評(píng)論0 收藏0
  • JavaScript 闖關(guān)簡(jiǎn)介

    摘要:瀏覽器只是實(shí)現(xiàn)的宿主環(huán)境之一,其他宿主環(huán)境包括和。年月,版發(fā)布,成為國(guó)際標(biāo)準(zhǔn)。事件定義了事件和事件處理的接口。對(duì)于已經(jīng)正式納入標(biāo)準(zhǔn)的來說,盡管各瀏覽器都實(shí)現(xiàn)了某些眾所周知的共同特性,但其他特性還是會(huì)因?yàn)g覽器而異。 JavaScript 是面向 Web 的編程語言,絕大多數(shù)現(xiàn)代網(wǎng)站都使用了 JavaScript,并且所有的現(xiàn)代 Web 瀏覽器(電腦,手機(jī),平板)均包含了 JavaScri...

    baihe 評(píng)論0 收藏0
  • JavaScript 闖關(guān)語句

    摘要:會(huì)自動(dòng)調(diào)用轉(zhuǎn)換函數(shù)將這個(gè)表達(dá)式的結(jié)果轉(zhuǎn)換為一個(gè)布爾值。語句語句與語句的關(guān)系最為密切,而且也是在其他語言中普遍使用的一種流控制語句。 表達(dá)式在 JavaScript 中是短語,那么語句就是整句命令。表達(dá)式用來計(jì)算出一個(gè)值,語句用來執(zhí)行以使某件事發(fā)生。從本質(zhì)上看,語句定義了 JavaScript 中的主要語法,語句通常使用一或多個(gè)關(guān)鍵字來完成給定任務(wù)。語句可以很簡(jiǎn)單,例如通知函數(shù)退出;也可...

    OBKoro1 評(píng)論0 收藏0
  • JavaScript 闖關(guān)函數(shù)

    摘要:把上面的函數(shù)聲明改為等價(jià)的函數(shù)表達(dá)式,就會(huì)在執(zhí)行期間導(dǎo)致錯(cuò)誤。換句話說,引用的是函數(shù)據(jù)以執(zhí)行的環(huán)境對(duì)象當(dāng)在網(wǎng)頁的全局作用域中調(diào)用函數(shù)時(shí),對(duì)象引用的就是。這兩個(gè)方法的用途都是在特定的作用域中調(diào)用函數(shù),實(shí)際上等于設(shè)置函數(shù)體內(nèi)對(duì)象的值。 函數(shù)是一段代碼,它只定義一次,但可以被執(zhí)行或調(diào)用任意次。在 JavaScript 里,函數(shù)即對(duì)象,程序可以隨意操控它們。比如,可以把函數(shù)賦值給變量,或者作為...

    alphahans 評(píng)論0 收藏0
  • JavaScript 闖關(guān)初探

    摘要:使用元素嵌入代碼時(shí),只需為指定屬性。需要注意的是,帶有屬性的元素不應(yīng)該在其和元素之間再包含額外的代碼。在包含外部文件時(shí),必須將屬性設(shè)置為指向相應(yīng)文件的。所有元素都會(huì)按照他們?cè)陧撁嬷谐霈F(xiàn)的先后順序依次被解析。關(guān)注,獲取最新動(dòng)態(tài)。 當(dāng)學(xué)習(xí)一門新的編程語言的時(shí)候,應(yīng)該邊學(xué)邊做,反復(fù)演練以加深理解。因此,你需要一個(gè) JavaScript 解釋器。幸運(yùn)的是,每一個(gè) Web 瀏覽器都包含一個(gè) Ja...

    atinosun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<