码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript权威指南手记(二)

时间:2018-11-30 18:25:08      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:美国   做什么   函数名   属性   ace   网络   客户端   xtend   其他   

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权威指南手记(二)

标签:美国   做什么   函数名   属性   ace   网络   客户端   xtend   其他   

原文地址:http://blog.51cto.com/geshen66666/2324444

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!