这篇文章主要是记录《JavaScript语言精粹》语法篇的笔记。
标识符
使用场景:标识符主要是被用于语句、变量、参数、属性名、运算符和标记中
- 由一个字母开头,其后可选择性地加上一个或者多个字母,数字或者下划线
- 标识符不能使用以下这些保留字
| 保留字 | ||||||
|---|---|---|---|---|---|---|
| abstract | boolean | 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 | instance | 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 |
除了以上的保留字还有undefined,NaN和Infinity也不能用于标识符中 JavaScript不允许在对象字面量中,或者用点运算符提取对象属性时,使用保留字作为对象的属性名
数字
- 数字字面量有指数部分,那么这个字面量的值就等于e之前的数字与e之后的次方相乘(2e2与2*100相等)
- NaN是一个数值NaN不等于任何值,包括它自己,可以用函数isNaN(number)检测NaN,或者通过X===X是false来判断X是否是NaN
扩展 Number.isNaN()和isNaN()区别
字符串
- 反斜杠(/)是转义字符
语句
一个编译单元包含一组可执行语句。在web浏览器中,每个script标签提供一个被编译且立即执行的编译单元。
- 条件语句:if和switch
- 循环语句:while,for,do
- 强制跳转语句:break,return,throw
- 这些值被当作假值
| 假值 | |||||
|---|---|---|---|---|---|
| false | null | undefined | 空字符串'' | 数字0 | 数字NaN |
除了以上为假值,其他值都是真值包括(true,字符串'false',以及所有对象)
- for语句
for(初始化从句;条件从句;增量从句){
执行语句
}
执行顺序:首先条件从句,如果为假,终止循环,如果为真,则执行代码块,接着增量从句;接着循环重复执行条件语句
- try catch语句
try语句执行一个代码块,并捕获该代码块中的任何异常。catch从句定义一个新的变量来接收抛出的异常对象。如果throw语句在try中,控制流会跳转到catch中。如果throw语句在函数中,则该函数调用被放弃,控制流跳转到catch中。
throw语句的表达式通常是一个对象字面量,包含一个name属性和message属性
- return语句
会导致从函数中提前返回,可指定要返回的值。不允许在return和表达式之间换行。
- break语句
使程序退出一个循环或switch语句,它可指定一个可选标签,那退出的就是带该标签的语句。不允许在break和标签之间换行。
- continue语句
跳过循环中的当前迭代
for(let i=0;i<7;i++){
if(i===5){//跳出i=5的循环
continue;
}
}
表达式
最简单的表达式是字面量值(比如字符串或数字),变量,内置的值(true,false,null,undefined,NaN和Infinity),以new开头的调用表达式,以delete开头的属性提取表达式,包在圆括号中的表达式,以一个前置运算符作为前导的表达式,或者表达式后面跟着:
- 一个中置运算符与另一个表达式
- 三元运算符表达式
- 一个函数调用
- 一个属性提取表达式