运算符
一、算术运算符
1.定义
数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。
代码如下:
<body>
<script>
let num1 = 10;
num2 = 2;
// 加法
/* console.log(num1 + num2);
// 减法
console.log(num1 - num2);
// 乘法
console.log(num1 * num2);
// 除法
console.log(num1 / num2); */
// 取余%
console.log(num1 % num2);/* 结果=0 */
console.log(20 % 2); /* 结果=0 */
console.log(20 % 4); /* 结果=0 */
console.log(20 % 3); /* 结果=2*/
console.log(10 % 3); /* 结果=1 */
console.log(30 % 3); /* 结果=0 */
console.log(40 % 3); /* 结果=1 */
console.log(50 % 3); /* 结果=2 */
console.log(60 % 3); /* 结果=0 */
console.log(70 % 3); /* 结果=1*/
</script>
</body>
取余运算符开发中会用来判断某个数字是否能被整除
小试牛刀案例
需求:对话框中输入圆的半径,算出圆的面积并显示到页面
js中的π写法 Math.PI
<script>
let r =prompt('请输入圆的半径')
console.log('圆的半径是' + Math.PI * r * r)
</script>
优先级
- 先乘除取余再加减
- 有括号的先算括号,可以加()提升优先级
- JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行
二、赋值运算符
1.定义
赋值运算符:对变量进行赋值的运算符
注意点:将等号右边的值赋予给左边, 要求左边必须是一个变量
赋值运算符的写法就是为了简化代码
2.代码如下
<script>
/* let num1 = 10;
num1 = num1 + 1;
console.log(num1); */
let num1 = 10;
/* // 简化加法写法
num1 += 1; */
/* 简化减法写法
num1 -= 1; */
/* 简化乘法写法
num1 *= 1; */
/* 简化除法写法
num1 /= 1; */
// 简化取余写法
num1 %= 1;
console.log(num1);
</script>
三、一元运算符
1.定义
只需要一个表达式就可以运算的运算符叫一元运算符
一元运算符的写法也是为了简化代码
2.自增和自减的书写方式
自增:
书写符号:++
作用:让变量的值 +1
自减:
书写符号:--
作用:让变量的值 -1
一元运算符通常也是用于计数来使用
3.参与运算中前置自增和后置自增的区别
前置自增:先自加再使用(口诀:++在前 先加)
<script>
let num =1
console.log(++num + 2) /* 结果=4 */
/* 可以理解为先自加,自加后变成了2
num=1+1,此时num=2
变成2后再使用,和后面的2相加
console.log(num + 2) 就是(2+2) */
</script>
后置自增:先使用再自加(口诀:++在后 后加)
<script>
let num = 1;
console.log (num++ +2) /* 结果=3 */
/* 可以理解为先使用
console.log(num + 2) 就是1+2=3
后面输出自加 num=1+1 */
</script>
一般我们在开发中都是独立使用的,后置自增 i++ 会使用比较多
四、比较运算符
1.定义
比较两个数据大小、是否相等
2.常见的比较运算符
==: 左右两边是否相等,将两边的数据进行转换为数值 ===: 左右两边是否类型和值都相等
!=: 不全等,只判断里面的值,类型忽略不管忽略,
!==: 不全等,判断里面的类型和值
注意点:比较结果为boolean类型,即只会得到true或false
3.代码如下
<script>
console.log(3 > 10); /* false */
console.log(3 < 10); /* true */
console.log(3 >= 10); /* false */
console.log(3 <= 3); /* true */
// 判断两个是否相等要用==
console.log(3 == 3); /* true */
// 数字和字符串相比较,两个==,只会判断数值不会判断类型
console.log(3 == '3'); /* true */
// 数字和字符串相比较,三个===,既会判断数值又会判断类型,三个===是比较严谨推荐写法
console.log(3 === '3'); /* false */
//数字和字符串相比较, 最好是先要隐式转换再比较
console.log(4 > Number('3')); /* true */
// 判断 3 不等于 5 != 不等于
console.log(3!=5); // true
console.log(3 != '3'); // false 只比较两边数值,不比较类型
console.log(3 !== '3'); // true ,判断里面的值和类型
</script>
4.比较运算符的细节
-
比较 一般都是对数字做比较 对于字符串做比较 更多是判断两者是否相等
-
如果拿字符串去 大小的比较,判断的标准是 a.先把字符串 拿去做 转数字
b.转完了数字之后, 才根据数字做大小比较!
- 尽量不要比较小数,因为小数有精度的问题
五、逻辑运算符
1.定义
逻辑运算符用来解决多重条件判断
2.逻辑运算符的使用
| 符号 | 名称 | 日常读法 | 特点 | 口诀 |
|---|---|---|---|---|
| && | 逻辑与 | 并且 | 符号两边都为true结果才为true | 一假则假 |
| || | 逻辑或 | 或者 | 符号两边有一个true就为true | 一真则真 |
| ! | 逻辑非 | 取反 | true变falsefalse变true | 真变假,假变真 |
小试牛刀案例
需求:用户输入一个,判断这个数能被4整除,但是不能被100整除
代码如下
<script>
// 1.先获取用户的输入
let num = +prompt("请输入一个数字");
// 2.判断要知道是 逻辑与还是逻辑或
/* 3.数一下有几个条件 2个条件
构建输出框架 */
console.log(num % 4 === 0 && num % 100 !== 0);
</script>
3.短路运算
主要为了获取值,通过逻辑符给变量赋值
&&:如果第一个表达式假,直接返回false ,如果第一个为真,才会去执行第二个,返回第二个的值,
如果第一个二个为真,就继续执行第三个,返回第三个值
技巧口诀:左边的为false就发生短路不再继续执行 ,它的值要么就是false,要么就返回最后一个值
代码如下
<script>
/* 常规应用:逻辑运算符的作用是用来连接多条件,返回一个Boolean值
短路运算:主要为了获取值,通过逻辑符给变量赋值 */
/* &&:如果第一个表达式假,直接返回false ,如果第一个为真,才会去执行第二个,返回第二个的值,
如果第一个二个为真,就继续执行第三个,返回第三个值
技巧口诀:左边的为false就发生短路不再继续执行 ,它的值要么就是false,要么就返回最后一个值*/
/* let num = 4 < 3 && 5 //结果false
let num1 = 4 > 3 && 5 && 9 //结果为9
console.log(num); */
let a = 10
let num = 5 < 4 && ++a
console.log(num); //结果为false
console.log(a); //结果为10
</script>
|| : 如果第一个表达式为真,就返回第一个值,后面的就不再执行,如果第一个为假,才会执行第二个,
如果第二个也为假,那么就执行第三个,如果没有第三个,就返回false
技巧口诀:左边为true就发生短路不再继续执行,它的值要么是第一个为真的值,要么就是false
代码如下
<script>
/* ||:如果第一个表达式为真,就返回第一个值,后面的就不再执行,如果第一个为假,才会执行第二个,
如果第二个也为假,那么就执行第三个,如果没有第三个,就返回false
技巧口诀:左边为true就发生短路不再继续执行,它的值要么是第一个为真的值,要么就是false*/
/* let num2 = 4 > 3 || 5 //结果true
let num3 = 4 < 3 || 5 || 9 //结果为5
console.log(num3) */
let a1 = 10
// let num1 = 5 < 4 || ++a
// console.log(num1); //结果为11
let num1 = 5 > 4 || ++a //结果是true
console.log(a1); //结果为10
// 生活工作使用场景 函数传参
function test(name) {
name = name || "匿名";
console.log(`我的名字叫${name}`);
}
test("jack");
</script>
注意点
// 我们的 undefined 如果 转换成 布尔类型 其实是个false
// 这些值 undefined null 0 空字符串 false NaN 转成 布尔类型后 false
console.log(Boolean(undefined));
console.log(Boolean(null));
console.log(Boolean(0));
console.log(Boolean(""));
console.log(Boolean(false));
console.log(Boolean(NaN));
六、运算符优先级
注意点
一元运算符里面的逻辑非优先级最高
逻辑与比逻辑或优先级高