表达式和语句
Javascript 中一段段的句子可以分为两种: 语句和表达式. 它们的区别是, 表达式有值, 语句可能有也可能没有; 语句一般用来修改环境, 比如声明和赋值
返回值: 只有函数才有返回值, 比如
console.log的返回值是它本身,console.log(3)的返回值是undefined.
标识符
标识是用来给变量或者常量命名的字符串. 命名的规则是:
- 首字母以unicode字母(包括英文字母), ‘$’, ‘_’ 或中文汉字的其中一种开头,
- 第二位开始可以用数字以及上面提到的字符
条件语句
用来形成选择结构的语句称为条件语句. 一般用法是, 当满足某个条件时, 执行一段语句. 不满足时执行另一段语句.
if 语句
典型结构
if (condition) {语句一}else {语句二}
上面的代码表示: 当condition(表达式) 成立时, 执行语句一, 否则, 执行语句二.
注意括号内一定是一个表达式, 根据它的值做出判断.
更普遍的写法:
if ( ) {} else if ( ) {} else {}
switch 语句
当 fruit 这个表达式的值与下面的某一项匹配时, 开始执行语句, 直到遇见break.
switch (fruit) {case "banana":// ...break;case "apple":// ...break;default:// ...}
需要注意的是, break 一定不能省略, 除非你确实需要使用它达成明确的目的.
问号冒号表达式
常见形式
(表达式1)?(语句1):(语句2)
效果: 当表达式1 成立时, 执行语句1, 否则执行语句2.
&&短路逻辑
短路逻辑用于表达式中, 通过短路运算得到一个真值或假值, 也叫’与操作’, 为方便解释, 我们假设有四个语句 A, B, C和D, 把它们用 && 连接起来.
A && B && C && D
运算过程是
- 当 A 为假, 取 A 的值, 表达式结果为假
- 当 A 为真, 继续往后看, 若 B 为假, 则取 B 的值, 表达式的结果为假,以此类推
- 如果所有值都为真, 取 D 的值, 结果为真
规律就是, 从前往后找直到遇见第一个假值; 如果全为真, 则表达式的结果为真, 否则为假.
|| 短路逻辑
与 && 性质一样, 逻辑刚好相反. 规律是从前往后找直到遇见第一个真值; 如果全为假, 则表达式的结果为假, 否则为真.
循环语句
用来构造循环结构的语句是循环语句, 循环的意思是重复的进行某一项操作.
for 循环
for 循环语句的结构
for(语句1; 表达式2; 语句3){循环体}
- 语句1 是变量初始化
- 表达式2 是判断循环体是否被执行的条件
- 语句3 是递增方式
为了避免死循环,有几点需要注意:
- 2 和 3 两部分必须有
- 表达式2 的计算值必须能被3 改变, 不能是个常量
- 语句3 的递增方式的原则是使 2 最终等于一个假值, 结束掉循环
continue 和 break 的区别
break 会直接退出循环, 执行之后的语句; continue 的 作用是退出这一次循环体的执行, 进行后面的循环环节.
break 会退出循环, 但只会退出它所在的那一层的循环; 如果是循环的嵌套, 内层的 break 不会影响 外层 的循环执行.
label 语句
使用label语句是为了给代码块添加标签,方便将来替换使用. 可以参考Javascript中的label语句.
其它
- 浮点数不相等可能造成死循环
- return 那一行没有别的内容时, 会自动追加一个
undefined - 如果是用 var 定义的变量, 循环体中的
setTimeout会在循环结束后才执行
