1 表达式与语句
1.1 表达式
表达式 ( epression ) , 指一个为了得到返回值的计算式. 举例: 1+2, a+3.14, 这两个都是表达式.
- add(1,2)表达式的值为函数的返回值. 注意: 只有函数有返回值.
- console.log表达式的值为函数本身.
console.log(3)的值是”undefined”, 打印出来的是”3”.
1.2 语句
语句(statement), 是为了完成某种任务而进行的操作, 一般情况下不需要返回值.
语句以分号( ; )结尾, 一个分号表示一个语句结束.
- 逗号( , )则表示语句停顿、未结束.
1.3 表达式和语句的区别
2 标识符
标识符 (identifier), 指的是用来识别各种值的合法名称. 最常见的标识符是变量名、函数名。
2.1 标识符命名规则
第一个字符:
- Unicode 字母 (包括英文字母和其他语言的字母);
- 美元符号 $ ;
- 下划线 _ (下划线长度最好不要超过两个) ;
- 中文.
第二个字符和后面的字符:
- 除了 Unicode 字母、美元符号、下划线、中文, 还可以用数字0-9.
举例:
var =1
var $ =8
var __ =6
var 雷吼 = “hello”
2.2 标识符对大小写敏感
JavaScript 语言的标识符对大小写敏感.
所以a和A, object和Object, function和Function, 都是两个不同的标识符.
3 注释
好的注释是
- 关于踩坑的注释;
- 关于代码写得很奇怪的原因, 遇到什么bug.
4 条件语句
JS条件语句有if语句, if…else语句, switch语句.
4.1 if 语句
意思: 如果…那么…
语法:
if (表达式) {
语句;
}
//当表达式为true, 执行语句; 当表达式为false, 不执行语句, 即跳过紧跟在表达式后面的语句.
//{ } 在语句只有一句的时候可以省略.
例子1:
a = 1
if (a === 2)
console.log('a')
console.log('a等于2')
这四行的打印结果是”a等于2”.因为这四行实际上是
a = 1
if (a === 2) {
console.log("a");
}
console.log("a等于2")
例子2-3:
注意: 逗号表示一个语句没有结束. 分号表示一个语句结束了.
4.2 if…else 语句
意思: 如果…那么…否则…
语法:
if (表达式) {
语句1;
} else {
语句2;
}
对同一个变量进行多次判断时, 多个if…else语句可以连写在一起, 比如:
if (m ===0) {
语句1;
} else if (m ===1) {
语句2;
} elss if (m===2) {
语句3:
} else {
语句4;
}
4.3 switch 语句
多个if…else连在一起使用的时候,可以使用更方便的switch语句代替。
语法:
switch (整形表达式) {
case 值1: 语句1; break;
case 值2: 语句2; break;
case 值3: 语句3; break;
...多个case语句
default: 以上值都不满足时, 执行此语句; break; //最后一个break可以省略.
}
5 三元运算符
语法:
表达式1?表达式2:表达式3
意思: 如果表达式1为true, 那么结果采用表达式2; 如果表达式1为false, 那么结果采用表达式3.
三元运算符语句可用于代替最简单的if..else语句.
6 短路运算符&&、||
6.1 短路与 &&
语法: 表达式1 && 表达式2 && 表达式3 && 表达式4
规则: 取第一个false值或最后一个值. 并不会取值”true”/ “false”.
6.2 短路或 ||
语法: 表达式1 || 表达式2 || 表达式3 || 表达式4
规则: 取第一个true值或最后一个值. 并不会取值”true”/ “false”.
7 循环语句
循环语句包括while循环, for循环, do…while循环, break语句和continue语句, 标签(label).
7.1 while 循环
语法:
while (表达式) {
语句
}
运行规则:
先判断表达式的真假;
若表达式为true, 执行语句, 执行完, 再重新判断表达式的真假;
若表达式为false, 则跳过循环的语句.
注意: 代码块部分, 如果只有一条语句, 可以省略大括号{ }, 否则就必须加上大括号.
- 例子1:
下面这个是死循环. 原因: 浮点数造成的不精确.
while循环语句, 包括初始化、判断、循环体、增长四个部分, 如果缺少其中一个部分, 就会导致死循环.
- 例子2:
setTimeout, 作用是过一段时间之后执行操作.
在循环结束之后, i 的值是5, 且打印了五次5.
打印了五次5, 是因为setTimeout在这里是异步执行.
这里把var改为let, 则可以让console.log(i)的i不会异步执行.
7.2 do while 循环
语法: do { 语句 } while (表达式);
用得较少.
7.3 for 循环
语法:
for (初始化语句; 表达式; 循环后操作语句) {
循环体
}
特点:
初始化语句: 只在循环开始时执行一次, 一般是定义一个变量, 并赋值.
表达式: 表达式为false时, 循环终止; 为true, 才执行循环体.
循环后操作语句: 循环体执行后调用该语句, 一般是变量的递增或递减操作.
执行顺序:
I 初始化语句 > II表达式;
若为false, 跳过循环体;
若为true, III 执行循环体;
IV 循环后操作语句 > II表达式.
7.4 break 语句和 continue
break语句和continue语句都具有跳转作用, 可以让代码不按既有的顺序执行.
break语句作用: 结束当前所在的循环.
continue语句作用: 跳过当前这一次循环, 返回循环结构的头部,开始下一轮循环.
7.5 标签
语法: { label : 语句 }
作用: 用于跳转到程序任意位置.
举例: { foo: 1}
这个不是对象. foo是标签, 这个标签的语句是1.