JavaScript语言精粹学习笔记-语法

第二章 语法:
2.1空白:有些空格可以删除,有些则不能。比如

      var that = "a";

上述代码中var和that中间的空格就不可以删除,其他的都可以删除。
JavaScript中有两种注释形式,一种是/* */,一种是//。建议使用//,
使用/* */在包含正则表达式等语句时可能出错。
切记:没有用的注释比没有注释还糟糕。

2.2标识符:标识符由字母开头,后更一个或多个字母、数字、下划线;不要使用保留字当标识符

abstract
boolean break byte
case catch char class const continue
debugger default delete do double
else enum export extends
false final finally float for function
goto
if implements import 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

JavaScript不允许使用保留字当标识符,也不允许在属性存取表达式的点号之后,使用保留字。

2.3数字:JavaScript只有一种表示数字的方法,他在内部使用64位浮点数表示,没有分离出整数,所以对于JavaScript,1和1.0是一回事。
值NaN是一个数值,他表示一个不能产生正常结果的结果,它不等于任何值,包括他自己,你可以使用isNaN来检测NaN。
Infinity表示所有大于1.79…E+308的值。

2.4字符串:字符串字面量可以被包围在单引号或双引号之间,\是转义字符。JavaScript语言使用Unicode字符集,Unicode16位。这是因为JavaScript发明时,Unicode就是16位;
JavaScript中没有字符类型,要表示字符类型,可以用只有一个字符的字符串。
JavaScript中字符串是不可变的,字符串的length方法,可以返回字符串中字符的个数。
两个拥有相同的字符个数和字符顺序的字符串被认为是相等的。

2.5语句:一个编译单元包含一组可执行的语句。在web中每一个script都提供一个被编译且被立即执行的编译单元。
因为缺少连接器,JavaScript把所有的script抛入一个全局命名空间中。
当var在函数中使用时,它定义了这个函数的私有变量。
switch、while、for、do都有一个可选的前置label,它配合break使用。
语句按照顺序执行,JavaScript可以通过条件语句、循环语句、强制跳转语句和函数调用来改变执行顺序。
包裹在一对花括号中的语句是代码块,在JavaScript中,代码块不会有新的作用域出现。

下列值的出现被当做假,false、null、undefined、字符串”、数字0、数字NaN,其他所有值都被当成是真,包括true,”false”以及所有对象。
return语句可以返回到调用函数的位置,return可以指定返值(可以返回任何值,包括对象),如果没有返回值,则返回undefined;
可以使用break语句跳转到标记所在位置,JavaScript不允许在标记和break之间有换行。

2.6表达式:最简单的表达式是字面量值(比如字符串或数字)、变量、内置的值(true、false、null、NaN、undefined、Infinity)、以new前导的表达式、
以delete前导的属性存取表达式、包在圆括号中的表达式、以一个前缀运算符作为前导的表达式、或者表达式后面跟着:
(一个插入运算符与另一个表达式、三元运算符(?和一个表达式加上:和另一个表达式)、一个函数调用、一个存取表达式)
运算符优先级,

. [] () 、 delete new typeof + - ! 、 * / % 、+ - 、>= <= > < 、=== !==、 && 、 || 、 ?: 


typeof运算符产生的只有
'number'、'string'、'boolean'、'undefined'、'function'和'object'
六个结果,返回值都是字符串。
有一点需要注意,如果有a=1,那么b=(a++)+a;应该怎样理解呢。
首先计算b的值,然后计算(a++),此时设(a++)为c,则c的值为1,顺序执行到a,此时因为已经执行过(a++),则a的值为2,所以最终b=3;
由此可以看出JavaScript计算表达式是严格按照从左到右的顺序执行的。
+表达式倾向于字符串,也就是如果遇到字符串的话,他就将字符串前的值进行计算之后转换为字符串,字符串之后的值也转换为字符串。
比如

1+'3'//'13' 
1+2+'3'//'33'

&& || 返回的实际上不一定是布尔值,他返回的是真值或假值。

2.7字面量:对象字面量是一种方便指定新对象的方法。属性名可以说标识符或字符串,这些名字被当做字面量而不是变量名来对待,所以对象的属性名在编译时才能知道。
属性的值就是表达式。
数组字面量是一种方便指定新数组的方法。

2.8函数:函数字面量定义了函数值,他可以有有一个可选的名字,用于递归的调用自己。可以指定一个参数列表,这些参数将在函数调用的时候有实际传入的参数进行初始化。
函数的主体包括变量定义和语句。

猜你喜欢

转载自blog.csdn.net/laozhaishaozuo/article/details/45649275