JavaScript语言精粹——语法

1.javascript提供两种注释形式,一种是/*  */包围的块注释,一种是以//开头的行注释。在JavaScript中因为*与/可能会成对出现在正则表达式字面上,所以块注释对于被注释的代码来说可能不安全,如
/*
var rm_a= /a*/.match(s);
*/
导致语法错误,所以尽量避免使用块注释,用//代替。

2.标识符
标识符由字母开头,后边可以选择性的加一个或者多个字母数字或者下划线,标识符不能使用保留字
标识符被用于语句,变量,参数,属性名,运算符和标记
abstract
boolean  break  byte
case  catch  char  class  const  continue
debugger  default  delete  do  double
else  enum  export  extents
false final  finally  float  for  function
goto
if  implements  improt  in  instanceof  int  interface
long
native  new  null
package  private  protected  public
return
short  static  super  switch  synchronized
this  throw  throws  transient  true  try  typeof
var  volatile  void
while  with

这个列表中不包括一些本该保留而没保留的字,如NaN,undefined,Infinity,JavaScript不允许使用保留字命名变量或参数,不允许在对象字面量中或者在一个属性存取表达式的点号之后,使用保留字作为对象的属性名。

3.数字
javascript只有一个单一的数字类型,它在内部被表示为64位的浮点数。没有分离出整数类型,所以1和1.0是相同的。100与1e2相同
值Infinity表示任何大于1.79769313486231570e+308的值。

4.字符串
①字符串字面量可以被包围在单引号或双引号中,可能包含0或者多个字符。\是转义字符,javascript中所有字符都是16位的。因为在创建它时,Unicode是一个16位的字符集。 Javascript没有字符类型。
②转义字符允许把那些正常情况下不被允许的字符插入到字符串,比如反斜线,引号和控制字符。
③\u 约定允许指定用数字表示的字符码位。 "A"==="\u0041"
④字符串有一个length属性,如"seven".length是5.
⑤字符串是不可变的,一旦被创建就永远无法改变它,但可以通过+运算符去连接其他字符串得到新的字符串。
⑥两个包含着完全相同的字符并且顺序也相同的字符串被认为是相同的字符串
'c'+'a'+'t'==='cat'

5.语句
①当var 语句被用在函数的内部,它定义了这个函数的私有变量
②switch、while、for、do语句允许有一个可选的前置标签(lable),配合break语句使用
③语句往往按照从上到下的顺序执行,javascript可以通过条件语句(if/switch)、循环语句(while、for、do)、强制跳转语句(break、return、throw)和函数调用来改变执行序列。
④代码块是包在一对花括号中的一组语句,javascript中的代码块并不会创建一个新的作用域,因此变量应该被定义在函数的顶端,而不是在代码块中。
⑤if语句根据表达式的值改变程序的控制流程,如果为真执行then代码块,否则执行可选的else分支。

<1>false,null,undefined,空字符串“”,数字0和数字NaN被当做假,
其他所有值都被当做真,包括true,字符串“flase”,以及所有对象
<2>switch执行一个多路分支,它把其表达式的值和所有指定的case条件进行匹配,其表达式可能产生一个数字或字符串,当找到一个精确的匹配,执行匹配的case从句中的语句。没找到任何匹配则执行可选的default语句
<3>一个case从句包含一个或多个case表达式,case表达式不一定必须是常量。为了防止继续执行下一个case,case语句后应该跟随一个强制跳转语句,用break语法退出从句。
<4>while语句执行一个简单的循环,当表达式为假那么循环将终止,表达式为真代码块将被执行。
<5>for语句有两种形式
(1)常见的形式由三个可选从句控制,初始化从句(initialization),条件从句(condition)和增量从句(increment)。
(2)另一种形式被称为for-in语句,会枚举一个对象的所有属性名或键名,每次循环中,对象的另一个属性名字符串被赋值给for和in之间的变量。
(3)通常需要通过检测object.hasOwnProperty(variable)来确定这个属性名就是该对象的成员还是从其原型链里找到的。
<6>do语句与while语句的唯一区别是它在代码块执行后而不是之前检测表达式的值,意味着代码将总是至少执行一次。
<7>try语句执行一个代码块,并捕获该代码抛出的任何异常。catch从句定义了一个新的变量,它将接收该异常对象。
<8>throw语句抛出一个异常,如果throw语句在try代码块中,控制权会跳到catch从句中。如果throw语句在函数中,那么该函数调用将被放弃,且控制权会跳到该try语句的catch从句中。
throw语句的表达式通常是一个对象字面量,包含一个name属性和一个message属性,异常捕获器可以用这些信息决定该做什么。
<9>return语句会使一个函数提前返回,也可以指定要被返回的值,如果没指定返回表达式,则返回值为undefined.
javascript不允许在return关键字和表达式之间换行。
<10>break语句会使程序退出一个循环语句或switch语句,可以指定一个可选的标签,将会使程序退出带有该标签的语句。

javascript不允许在break关键字和标签之间换行。
运算符+=可以用于加法运算或者连接字符串。

6.表达式
①最简单的表达式是字面量值(如字符串或者数字)、变量、内置的值(true、false、null、undefined、NaN、Infinity)、以new前导的调用表达式、以delete前导的属性存取表达式、以一个前缀运算符作为前导的表达式,或者表达式后边跟着:
<1>一个插入运算符与另一个表达式;
<2>三元运算符?后边跟着另一个表达式,然后接一个:,再然后接第三个表达式;
<3>一个函数调用;
<4>一个属性存取表达式
三元运算符?有三个运算数,若第一个运算数为真则产生第二个运算数的值,否则产生第三个运算数的值。
②运算符优先级中,越上边优先级越高,结合性越强。圆括号可以用来改变正常情况下的优先级

.     []    ()                                                          属性存取以及函数调用
delete  new  typeof  +  -  !                           一元运算符
*      /    %                                                         乘法  、除法、 取模
+      -                                                               加法/连接、减法
>=      <=     >     <                                          不等式运算符
===    !==                                                     等式运算符
&&                                                                   逻辑与
||                                                                       逻辑或
?:                                                                       三元运算符
③typeof运算符产生的值有'number'、'string'、'boolean'、'undefined'、'function'和'object'。如果运算数是一个数组或者null,那么结果是'object',这点并不正确。
④+运算符可以进行加法运算或者字符串连接,如果想要的是加法运算,要确保两个运算数都是数字。
⑤/运算符可能会产生一个非整数结果,即使两个运算数都是整数。
⑥函数调用引发函数的执行,函数调用运算符是跟随在函数名后边的一堆圆括号,圆括号中可能包含会传递给这个函数的参数。

7.字面量
对象字面量是一种方便指定新对象的表示法,属性名可以是标识符或者字符串。这些名字被当作字面量而不是变量名对待,所以对象的属性名在编译时才能知道。属性的值就是表达式。
8.函数
函数字面量定义了函数值,它可以有一个可选的名字,用于递归调用。它可以指定一个参数列表,这些参数将作为变量由调用时传递的实际参数初始化。函数的主体包括变量定义和语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值