一.运算符
1.算术运算符
1.1数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。
- +:求和
- -:求差
- *:求积
- /:求商
- %:取模(取余数) 开发中经常作为某个数字是否被整除
1.2JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行。 - 乘、除、取余优先级相同
- 加、减优先级相同
- 乘、除、取余优先级大于加、减
- 使用 () 可以提升优先级
总结: 先乘除取余后加减,有括号先算括号里面的
2.赋值运算符
赋值运算符:对变量进行赋值的运算符
- = :将等号右边的值赋予给左边, 要求左边必须是一个变量
- += : num += 1 相当于 num = num + 1
- -= : num -= 1 相当于 num = num - 1
- *= : num *= 2 相当于 num = num * 2
- /= : num /= 2 相当于 num = num / 2
- %= : num %= 2 相当于 num = num % 2
3.一元运算符
3.1n元运算符
判断n: 根据 运算符,需要用到几个表达式 字面量\变量 都是表达式
3.2一元运算符:
自增运算符 ++ 每次加1
- 前置自增: 先自增,再计算
- 后置自增: 先计算,再自增
自减同理 --
4.比较运算符
比较运算符:
> : 左边是否大于右边
< : 左边是否小于右边
>= : 左边是否大于或等于右边
<= : 左边是否小于或等于右边
== : 左右两边是否相等,将两边的数据进行转换为数值
=== : 左右两边是否类型和值都相等
!== : 左右两边是否不全等
比较结果为boolean类型,即只会得到true或false
字符串比较,是比较的字符对应的ASCII码
从左往右依次比较
如果第一位一样再比较第二位,以此类推
比较的少,了解即可
NaN不等于任何值,包括它本身
尽量不要比较小数,因为小数有精度问题
js不适合用来高精度计算
一般计算是后端处理; 非要前端处理;一般是使用工具库
不同类型之间比较会发生隐式转换
最终把数据隐式转换转成number类型再比较
所以开发中,如果进行准确的比较我们更喜欢 === 或者 !==
true 转化为数字为 1 false 转化为数字是 0
= 和 == 和 === 的区别:
- = 是赋值
- == 是判断 只要求值相等,不要求数据类型一样即可返回true
- === 是全等 要求值和数据类型都一样返回的才是true
5.逻辑运算符
5.1逻辑运算符: 与或非
- 逻辑与: && 符号两边都为true,结果才是true
一假则假 - 逻辑或:|| 符号两边有一个为true,结果就是true
一真则真 - 逻辑非: ! 取反
真变假 假变真
5.2 逻辑运算符的短路 - && 左边为false就短路
- || 左边为true就短路
原因:通过左边能得到整个式子的结果,因此没必要再判断右边
运算结果:无论 && 还是 || ,运算结果都是最后被执行的表达式值,一般用在变量赋值
<script>
// 逻辑运算符的使用技巧: 短路
// 只会发生在 && || 里面
//&& 左边为false, 右边就短路
1 < 2 && console.log(123) // 123
2 < 2 && console.log(321) // 短路
console.log('----------------')
// || 左边为true,右边就短路
1 < 2 || console.log(123) //短路
2 < 2 || console.log(321) // 321
console.log('----------------')
//短路表达式有返回值
let res = false && 2
console.log('res: ', res); // false
res = 0 && 1
console.log('res: ', res); // 0
res = true && 2
console.log('res: ', res); // 2
res = false || 2
console.log('res: ', res); // 2
red = 2 || false
console.log('res: ', res); // 2
</script>
逻辑上为假的数据类型有:
false null undefined "" 0 NaN
逻辑上为真的数据类型有:
true "字符串里面有值" 数字非0(包括负数) Array Object
6.运算符优先级
↓ 小括号 ()
↓ 一元运算符 ++ -- !
↓ 先计算,再比较,再判断相等,再判断逻辑运算符;
↓ 赋值运算符 =
↓ 逗号运算符 ,
一元运算符里面的逻辑非优先级最高
逻辑与比逻辑或优先级高
二.语句
1.表达式和语句
- 表达式:
会在原地返回一个值 , 代码较短 - 语句:
用来描述一件事情,代码量较多
区别: - 表达式计算出一个值
- 语句用来描述一件事情
2.分支语句
2.1 程序流程三大控制语句
- 以前我们写的代码,写几句就从上往下执行几句,这种叫顺序结构
- 有的时候要根据条件选择执行代码,这种就叫分支结构
-
某段代码被重复执行,就叫循环结
2.2 分支语句
支语句可以让我们有选择性的执行想要的代码
分支语句包含: if分支语句, 三元运算符
2.2.1 if分支语句
if语句有三种使用:单分支、双分支、多分支 - 单分支使用语法:
if(条件){
满足条件执行的代码
}
括号内的条件为true时,进入大括号里执行代码
小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
- 双分支语法:
if(条件){
满足条件执行的代码
}els {
不满足执行的代码
}
- 多分支语法
if(条件1){
满足条件执行的代码 1
}else if(条件2){
满足条件执行的代码 2
}else if(条件3){
满足条件执行的代码 3
}else {
代码n
}
先判断条件1,若满足条件1就执行代码1,其他不执行
若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
若依然不满足继续往下判断,依次类推
若以上条件都不满足,执行else里的代码n
注:可以写N个条件,但这里演示只写2个
2.2.2 三元运算符
语法:
表达式 ? 表达式为真的时候,执行的语句 : 表达式为假的时候,执行的语句
3.循环语句
3.1 断点调试
作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
使用方法:
- 浏览器打开调试界面
- 按F12打开开发者工具
- 点到sources一栏
- 选择代码文件
-
断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来
3.2 while循环
语法:
while(循环条件){
...循环体(要循环执行的代码)
}
释义:
跟if语句很像,都要满足小括号里的条件为true才会进入执行代码
while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出
当你的才华还撑不起你的野心时,那你就应该静下心来学习。当你的经济还撑不起你的梦想时,那你就应该踏实的去工作!