好书值得细读,记得最初读这本js的入门读物,大概在一年前,当时觉得细节太过繁琐,略过了很多精华。现在读来,正是滋滋有味。(其实,对js的入门读物是否javascript权威指南有疑问,和对java的入门读物是否是thinking in java一样有疑问)

下面是读书笔记(个人笔记,主要为个人的查漏补缺):



词法结构:

字符集:16位的Unicode编码(可以表示地球上通用的每一种书面语言)。javascript程序中的每个字符都是用两个字节(是个内存概念)表示的。



"12".length//2



"abc".length//3



"我".length//1



ECMAScript v3标准允许Unicode字符出现在Javascript程序中的任何地方,但是该标准的第一版和第二版都只允许Unicode字符出现在注释或用引号括起的字符串直接量中,所有的元素只能用ASCII字符集。ECMAScript标准化之前的javascript版本通常根本不支持Unicode编码。



var 你=123;



console.debug(你)//123



 



大小写敏感:HTML是大小写不敏感的,事件句柄的onclick属性随便你怎么大小写;但javascript中只能使用onclick。



 



空白符和换行符:javascript会忽略程序中记号之间的空格、制表符和换行符。



 



可选的分号:尽管理论上说来javascript允许在任意两个记号之间放置换行符,但是实际上javascript会自动插入分号,使这一规则产生了异常。



return



true;



javascript会假定你的意图是



return;



true;



但你的实际意图很可能是



return true;



 



注释://或/* */



 



直接量:literal。就是程序中直接显示出来的数据值(依赖于词法分析的强大)。javascript还支持数组直接量和对象直接量。直接量对任何一种程序设计语言来说都是一个重要的部分,因为要编写不含直接量的程序几乎是不可能的。



 



标识符:和java相同:第一个字符必须是字母、下划线或美元符号。接下来的字符可以是字母、数字、下划线或美元符号(数字不允许作为首字母出现,这样javascript可以轻易地区别开标识符和数字了)。此外,ECMAScript v3还允许标识符中有Unicode转义序列(字符\u后接4个十六进制的数字,用来指定一个16位的字符编码)。



 



保留字:



保留的javascript关键字(就是一般的语法关键字)



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



ECMAScript v4草案正在考虑的关键字:as、is、namespace和use



要避免使用的其他标识符



arguments encodeURI Infinity 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