JavaScript權威指南手記(二)
程序設計語言的詞法結構是一套基本規則,用來詳細說明如何用這種語言來編寫程序,它是語言的最低層次,指定 了變量是什麽樣,註釋應該用什麽字符以及語句之間如何分割等
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權威指南手記(二)