美文网首页
第二章《语法》

第二章《语法》

作者: CCCCCccccccch | 来源:发表于2019-11-25 14:33 被阅读0次

1.空白

空白可能表现为格式化字符或注释的形式。空白通常没有意义,但是偶尔需要它来分隔字符序列,否则他们就会被合并成一个单一的符号。例如,对以下代码来说:

var that = this

var 和 that 之间的空格是不能被移除的,但其他的空格都可被移除。

2.标识符

标识符由一个字母开头,其后可选择性地加上一个或多个字母、数字或下划线。标识符不能使用保留字。(如for、function、if、while、var、this、undefined等等)

标识符被用于语句、变量、参数、属性名、运算符和标记。

JavaScript不允许使用保留字来命名变量或参数。JavaScript也不允许在对象字面量中,或者在一个属性存值表达式的点号之后,使用保留字作为对象的属性名。

3.数字

JavaScript只有一个单一的数字类型。它在内部表示为64位的浮点数,和java的double不一样。不像大多数其他的编程语言,它没有分离出整数类型,所以 1 和 1.0 是相同的值。这提供了很大的方便,因为它完全避免了短整数的溢出问题,并且你需要知道的关于数字的一切就是它是一种数字。这样就避免了一大类因数字类型导致的错误。

值 NaN 是一个数值,它表示一个不能产生正常结果的运算结果。NaN 不等于任何值,包括它自己。你可以用函数isNaN(number)来检测NaN。

值 Infinity 表示所有大于1.79769313486231570e+308的值。

数字拥有方法。JavaScript有一个对象Math,它包含一整套作用于数字的方法。例如,可以用Math.floor(number)方法将一个数字转化成一个整数。

4.字符串

字符串字面量可以被包围在单引号或双引号中,它可能包含0个或多个字符。\ (反斜线符号)是转义字符。JavaScript在被创建的时候,Unicode是一个16位的字符集,所以JavaScript中的所有字符都是16位的。

JavaScript没有字符类型。要表示一个字符,只需创建仅包含一个字符的字符串即可。

转义字符允许把那些正常情况下不被允许的字符插入到字符串中,比如反斜杠、引号和控制字符。

字符串有一个length属性。例如,"seven".length是5。

字符串是不可变的。一旦字符串被创建,就永远无法改变它。但通过 + 运算符可以去连接其他字符串从而得到一个新的字符串。两个包含完全相同的字符且字符顺序也相同的字符被认为是相同的字符串。所以:

'c' + 'a' + 't' === 'cat'     是ture。

字符串拥有一些方法。( 如toUpperCase()等 )

5.语句

一个编译单元包含一组可执行的语句。在web浏览器中,每个<script>标签都提供一个被编译且立即执行的编译单元。因为缺少链接器,JavaScript把它们一起抛入一个公共的全局名字空间中。

当var语句被用在函数内部时,它定义了这个函数的私有变量。

switch、while、for和do语句允许有一个可选的前置标签(label),它配合break语句来使用。

语句往往按照从上到下的顺序被执行。JavaScript可以通过条件语句(if 和 switch)、循环语句(while、for 和 do)、强制跳转语句(break、return 和 throw)和函数调用来改变这个执行序列。

代码块是包在一对花括号中的一组语句。不像许多其他语言,JavaScript中的代码块不会创建一个新的作用域,因此变量应该被定义在函数的顶端,而不是在代码块中。

在 if 语句的条件判断中,下面的值被当做是假(falsy):false、null、undefined、空字符串' '、数字 0、数字 NaN,其他所有值都被当做真,包括 true、字符串 'false',以及所有的对象

switch语句执行一个多路分支。它把表达式的值和所有指定的case条件进行匹配。其表达式可能产生一个数字或字符串。当找到一个精确的匹配时,执行匹配的case从句中的语句(case语句后应该跟随一个强制跳转语句,可以用break去退出一个switch语句)。如果没有找到任何匹配,则执行可选的default语句。

while语句执行一个简单的循环。如果表达式的值为假,那么循环将终止,而当表达式为真时,代码块将被执行。

for语句是一个结构更复杂的循环语句。它有两种形式。

常见的形式由三个可选从句控制:初始化从句(initialization)、条件从句(condition)和增量从句(increment)。首先,initialization被执行,它的作用通常是初始化循环变量。接着,计算condition的值。典型的情况是它根据一个完成条件检测循环变量。如果condition被省略,则假定返回的条件是真。如果condition的值为假,那么循环将终止。否则,执行代码块,然后执行increment,接着循环会重复执行condition。

另一种形式(被称为for in语句)会枚举一个对象的所有属性名(或键名)。在每次循环中,对象的另一个属性名字符串被赋值给for 和 in之间的变量。通常你需要通过检测object.hasOwnProperty(variable)来确定这个属性名就是该对象的成员,还是从原型链里找到的。

do语句就像while语句,唯一的区别是它在代码块执行之后而不是之前检测表达式的值。这就意味着代码块总是至少要执行一次。

try语句执行一个代码块,并捕获该代码块抛出的任何异常。catch从句定义了一个新的变量,它将接收该异常对象。

throw语句抛出一个异常。如果throw语句在一个try代码块中,那么控制权会跳到catch从句中。如果throw语句在函数中,则该函数调用被放弃,且控制权会跳到调用该函数的try语句和catch从句中。

return语句会使一个函数提前返回。它也可以指定要被返回的值。如果没有指定返回表达式,那么返回的值时undefined。JavaScript不允许在return关键字和表达式之间换行。

break语句会使程序退出一个循环语句或switch语句。

6.表达式

最简单的表达式是字面量值(比如字符串或数字)、变量、内置的值(true、false、null、undefined、NaN和Infinity)、以new前导的调用表达式、以delete前导的属性存取表达式、包在圆括号中的表达式、以一个前缀运算符作为前导的表达式。

运算符优先级(越排在下面优先级越低,圆括号可以用来改变正常情况下的优先级):

7.字面量

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

8.函数

函数字面量定义了函数值。它有一个可选的名字,用于递归地调用自己。它可以指定一个参数列表,这些参数将作为变量由调用时传递的实际参数(arguments)初始化,函数的主体包括变量定义和语句。

相关文章

网友评论

      本文标题:第二章《语法》

      本文链接:https://www.haomeiwen.com/subject/layqwctx.html