1. 程式人生 > >JavaScript權威指南手記(二)

JavaScript權威指南手記(二)

並不是 簡單 arguments nat 都是 while 因此 regex define

1、詞法結構

程序設計語言的詞法結構是一套基本規則,用來詳細說明如何用這種語言來編寫程序,它是語言的最低層次,指定 了變量是什麽樣,註釋應該用什麽字符以及語句之間如何分割等

1.1、字符集

JavaScript程序是用Unicode字符集編寫的,與ascii編碼(7位)不同的是,16位Unicode編碼可以表示地球上通用的每一種書面語言,它是國際化的一個重要特征,對於那些不同英語的程序員尤為重要

美國以及其他講英語的國家的程序設計者通常都用僅支持ascii碼和latin-1編碼的文本編輯器來編寫程序,因此他們難以訪問完整的unicode字符集,都是這都不是問題,因為asicii編碼和latin-1編碼都是unicode編碼的子集,所以用這兩種編碼編寫的javascript程序都是絕對有效的,JavaScript程序中的每個字符都是用2個字節表示的。

1.2、大小寫敏感

JavaScript是一種區分大小寫的語言,這就是說,在輸入語言的關鍵字、變量、函數名、以及所有的標識符時,都必須采用一致的字符大小寫形式。

但是要註意,HTML並不區分大小寫(盡管在XHTML中是區分大小寫的),由於它和客戶端的JavaScript相關聯,所以這一點很容易忽略

1.3、空白符和換行符

JavaScript會忽略程序中記號之間的空格、制表符、換行符,因為可以在程序中隨意使用空格、制表符、和換行符,所以程序員就可以采用整齊、一致的方式自由安排程序的格局,在其中使用縮進,從而使得代碼更容易的閱讀和理解。

1.4、可選的分號

JavaScript中的簡單語句後通常都有一個分號(;),就像java語言一樣,這主要為了分割語句,但是在JavaScript中,如果語句放置在不同的行中,就可以省略掉分號,比如下面的代碼

var a =1 ;
var b = 2 ; 

但是以上代碼寫在一行,這個分號就不能省略

var a=1 ;var b=2 ;

省略分號並不是一種好的編程習慣,應該習慣使用分號

盡管理論上來說JavaScript允許在任意的2個記號之間放置換行符,但是實際上JavaScript會自動插入分號,使這一規則產生了異常。如果你使用上述方式打斷了一行,以至於使換行符之前的一行形成了一個完整的語句,那麽JavaScript就會認為漏掉了分號,並插入一個分號,,這就改變了你的初衷,通常在使用return語句、break語句、和continue語句時我們應當要註意這一點,比如考慮如下的語句:

return
true;

JavaScript會假定你的意圖是:

return ;
true;

但是實際上你的意圖是:

return true;

註意:這種代碼不會引發語法錯誤,但是卻會因為產生一種不明確的狀態而導致錯誤。

1.5、註釋

和Java一樣,在JavaScript中也存在兩種註釋

單行註釋://註釋的內容

多行註釋:/*註釋的內容*/

1.6、直接量

所謂的直接量(literal),就是程序中直接顯示出來的數據值,下面的值都是直接量

1.2
12
"helloworld"
‘hi‘
true
false
null

在javascript中像數組直接量和對象直接量這樣的表達式也是支持的,比如

{x:1,y:2}
[1,23,4,5]

直接量對於任何一門程序語言都是重要的部分,因為編寫不含有直接量的程序幾乎是不可能的

1.7、標識符

所謂的標識符(idetifier)就是一個名字,在JavaScript中,標示符用來命名變量和函數,或者用作JavaScript代碼中某些循環標簽,在JavaScript中合法的標識符的命名規則和Java以及其他語言的命名規則基本上相同。

標識符和JavaScript中用於其他用途的關鍵字同名。

1.8、保留字

在JavaScript中,保留字是不能當做標識符的,因為他們在JavaScript中有這特殊的意義

保留的JavaScript的關鍵字

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

ECMA擴展的保留字

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,debugger,as,namespace,use

此外,還應該避免把JavaScript預定義的全局變量名或全局函數名作為標識符,如果用這些名字創建變量或函數,就會得到一個錯誤(如果該屬性是只讀的),或者重定義了一個已存在的變量或者函數。不應當這麽做,除非絕對明確自己在做什麽。

要避免使用的其他標示符

arguments,encodeURI,Infintiy,Object,String,Array,Error,isFinite,parseFloat,SyntaxError
Boolean,escape,isNaN,parseInt,TypeError,Date,eval,Math,RangeError,undefined,decodeURI
EvalError,NaN,ReferenceError,unescape,decodeURIComponent,Function,Number,RegExp,URIError

最後歡迎大家關註我博客旁邊的網絡課堂:http://edu.51cto.com/lecturer/11220344.html

也希望大家可以給我留言,共同討論技術

JavaScript權威指南手記(二)