前置基本知识
1.表达式和语句和值
- 表达式:
表达式是由运算符构成,并运算产生结果(值与返回值);
- 是对创建和赋值的对象 进行一种使用,是一种计算,可以类比为定义或者执行一种函数。
- 一般来说,每个表达式都会产生一个值,它可以放在任何需要一个值的地方
- 比如,作为一个函数调用的参数
- 返回值与值:两者一般为表达式所特有,其中,返回值 为函数特有
- 语句:
语句可以理解成一个行为,用来修改环境
- 一般的javascript中的语句分为下面几种:
- 声明语句:变量声明和函数声明,定义(创建)与赋值
- 赋值语句
- 控制语句:能够对语句执行顺序产生改变,包括条件语句和循环语句,当然还有比较特殊的标签语句。
- 表达式语句:
- 【某些需要语句的地方,你可以使用一个表达式来代替.这样的语句称之为表达式语句.但反过来不可以:你不能在一个需要表达式的地方放一个语句.比如,一个if语句不能作为一个函数的参数】
- 这些语句去掉最后分号,都也可当表达式用的。常见的有:对象操作(new、delete)、函数调用(函数执行,必有返回值)等。
- 值:
一般由表达式产生
- 特殊的有:函数表达式产生的值为 返回值
2.标识符及其规则
代码中用来标识变量(en-US)、函数、或属性(en-US)的字符序列
目前讲的是变量名的标识符
- 规则:
在JavaScript中,标识符:
- 只能包含字母或数字或下划线(“_”)或美元符号(“$”),
- 且不能以数字开头
- 不能与 JavaScript 关键字、保留字重名,以下是JavaScript自带保留字表
- 标识符与字符串不同之处在于字符串是数据,而标识符是代码的一部分
if 语句
最推荐使用的写法:
if (表达式1) {
语句1
} else if (表达式2) {
语句2
} else {
语句3
}
次推荐使用的写法:
function fn() {
if (表达式1) {
return 表达式1
}
if (表达式2) {
return 表达式2
}
return 表达式3
}
- {}在语句只有一句的时候可以省略,但不建议
- 缩进与分号和逗号的踩坑举例:
switch 语句
if…else…升级版
容易踩坑,不推荐常用
每个case都需要写一个break,不然,如果banana没有break, 那么它会继续执行apple的部分,直到碰到了Break
三元表达式(?:表达式)
最简单的 if…else… 写法
适用于if中只有一个语句,else中也只有一个语句的时候
语法结构写法:
- 条件表达式 ? 表达式1 : 表达式2
- 执行思路:如果条件表达式结果为真 则返回表达式1的值,如果条件表达式结果为假 则返回 表达式2的值
&&短路逻辑
也是if…else…的简单写法
是浅运算
- A&&B&&C&&D 执行思路:
- 依次从前往后比对取值
- 若前者为假 则直接取值前者,不顾后者(短路)
- 若前者为真 则 仍继续往后查看后者是真是假(以后者/后后者为重)
- 若后者为真 ,则取值后者
- 若后者为假 ,则取值后者
||短路逻辑
也是if…else…的简单写法
与&&短路逻辑相反
- A||B||C||D 执行思路:
- 依次从前往后对比取值
- 若前者为真 则直接取值前者, 不顾后者(短路)
- 若前者为假 则仍继续往后查看后者是真是假
- 若后者为真 ,则取值后者
- 若后者为假 ,则取值后者
- 常见的应用场景:
- 设定保底值 举例: ``` a = a || 100
//等同于
if (a) { a = a } else{ a = 100 //保底值 }
---
<a name="Am4A6"></a>
# while 循环语句
前置知识:浮点数的计算不精确,算术运算符中尽量不涉及浮点运算,否则容易导致死机和报错
**语法:**
while (条件表达式) { //循环体语句 }
- **while 循环语句执行思路:**
- 当条件表达式为真,执行循环体语句,执行完**再次判断**条件表达式真假,**循环往复**
- 当条件表达式为假,退出
<a name="fwWrC"></a>
## do...while 循环语句
**语法:**
do { //循环体语句 } while (条件表达式)
- **区别于while 循环语句执行思路:**
- 先斩后奏,先执行一次循环体语句后再判断 **再循环**
---
<a name="k4Swk"></a>
# for 循环语句
如果while循环语句是手动挡,那么for循环语句则是自动挡
**语法:**
for (初始化变量;条件表达式;操作表达式) { //循环体 }
- **for循环语句执行思路:**
- 先初始化变量
- 然后判断条件表达式
- 若为真,执行循环体,然后执行操作表达式
- 若为假,直接退出循环
---
<a name="FUDCq"></a>
# 中断关键字break 和 continue
break 跳出离它最近的一个整个循环 【相当于一枚**定时炸弹**】<br />continue 跳过当次循环,继续下一个(next)【相当于预感到地雷要爆炸时刚好跳过】<br />return fasle 跳出整个循环/函数,常用于阻止事件冒泡
---
<a name="9c56Q"></a>
# label 语句
用途只有面试考中概率5%<br />标记语句 可以和 [break](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/break) 或 [continue](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/continue) 语句一起使用。<br />标记就是在一条语句前面加个可以引用的标识符
**语法:**
foo: { console.log(1); break foo; console.log(‘本行不会输出’); } console.log(2)
``` foo 表示 label的标识符
- 面试
问:
{
foo:1
}
表示什么
答:
foo是个label,1是语句内容
非对象
学习参考链接:适合入门《网道 JavaScript 教程》