学习目标:
- 掌握运算符
学习内容:
- 赋值运算符
- 自增运算符
- 比较运算符
- 逻辑运算符
- 运算符优先级
赋值运算符:
对变量进行赋值的运算符。
- 已经学过的赋值运算符
= 将等号右边的值赋予给左边,要求左边必须是一个容器。 - 其他赋值运算符
+=
-=
*=
/=
%=
使用这些运算符可以在对变量赋值时进行快速操作。
- 代码
<title>赋值运算符</title>
</head>
<body>
<script>
//以前我们让一个变量+1 如何做的?
/* let num = 1
num = num + 1
console.log(num) //结果是2
*/
//现在--采取赋值运算符
let num = 1
// num += 1
num += 3
console.log(num)
</script>
</body>
自增运算符:
众多的JavaScript的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符。
- 二元运算符
let num = 10 + 20
- 一元运算符
自增 | 让变量的值**+1 ** |
---|---|
自减 | 让变量的值**-1* * |
使用场景 | 经常用于计数来使用。比如进行10次操作,用它来计算进行了多少次了。 |
- 自增运算符的用法
前置自增++
:
//1.前置自增
let i = 1
++i
console.log(i)
✔每次执行1次,当前变量数值加1。
✔其作用相当于i += 1
。
后置自增:
//2.后置自增
let i = 1
i++
console.log(i)
✔每次执行1次,当前变量数值加1。
✔其作用相当于i += 1
。
- 前置自增和后置自增单独使用没有区别。
- 前置自增和后置自增如果参与运算就有区别:(难点,但是了解即可)
// 3.前置自增:先自加再使用 记忆口诀: ++在前 先加
let i = 1
console.log(++i + 2) //结果是4
//注意:++i = 2
//i先自加1,变成2之后,在和后面的2相加
// 4.后置自增:先使用再自加 记忆口诀 : ++在后面 后加
let i = 1
console.log(i++ + 2) //结果是3
//注意: 此时 i++ = 1
//先和2相加,先运算输出完毕后,i再自加是2
- 了解
//了解
let i = 1
console.log(i++ + ++i + i) //结果是7
//1.注意:i++ = 1 ,此时i=2
// 2.i = 2,++i = 2 + 1 = 3,此时i = 3
//3. i=3
//4. 1 + 3 + 3 = 7
- 小结
1.前置自增和后置自增独立使用时二者并没有差别。
2.一般开发中我们都是独立使用。
3.后面i++
后置自增会使用相对较多,并且都是单独使用。
比较运算符:
使用场景:比较两个数据大小、是否相等。
- 比较运算符
> | 左边是否大于右边 |
---|---|
< | 左边是否小于右边 |
>= | 左边是否大于或等于右边 |
<= | 左边是否小于或等于右边 |
== | 左右两边值是否相等 |
=== | 左右两边是否类型和值都相等 |
!== | 左右两边是否不全等 |
比较结果为boolean
类型,即只会得到true
或false
。
console.log(3 > 5)
console.log(3 >= 3)
console.log(2 == 2)
//比较运算符有隐式转换 把'2' 转换成 2
// == 双等号 只判断值
console.log(2 == '2')
console.log(undefined == null)
// === 全等 判断 值和数据类型都一样才行
// 以后判断是否相等 请用 ===
console.log(2 === '2')
console.log(undefined === null)
console.log(NaN == NaN) // NaN 不等于任何人,包括他自己
console.log(2 !== '2')
- 对比
= | 单等是赋值 |
---|---|
== | 双等是判断 |
=== | 三等是全等 |
开发中判断是否相等,强烈推荐使用===
。
- 字符串比较
1.字符串比较,是比较的字符对应的ASCII
码。
2.从左往右依次比较。
3.如果第一位一样再比较第二位,以此类推。
4.比较的少,了解即可。
//字符串比较,是比较的字符对应的ASCII码
console.log('--------------')
console.log('a' < 'b') //true
console.log('aa' < 'ab') //true
console.log('aa' < 'aac') //true
- 小结
1.NaN
不等于任何值,包括它本身。
涉及到"NaN
"都是false
。
2.尽量不要比较小数,因为小数有精度问题。
3.不同类型之间比较会发生隐式转换。
最终把数据隐式转换转成number
类型再比较。
所以开发中,如果进行准确的比较我们更喜欢===
或者!==
逻辑运算符:
使用场景:逻辑运算符用来解决多重条件判断。
//正确写法:
num > 5 && num < 10
符号 | 名称 | 日常读法 | 特点 | 口诀 |
---|---|---|---|---|
&& | 逻辑与 | 并且 | 符号两边都为true,结果才为true | 一假则假 |
逻辑或 | 或者 | 符号两边有一个true,true就为true | 一真则真 | |
! | 逻辑非 | 取反 | true变false;false变true | 真变假,假变真 |
//逻辑 与&& 一假则假
console.log(true && true)
console.log(false && true)
console.log(3 < 5 && 3 > 2)
console.log(3 < 5 && 3 < 2)
console.log('------------')
// 逻辑 或|| 一真则真
console.log(true || true)
console.log(true || false)
console.log(false || false)
console.log('------------')
// 逻辑 非! 取反
console.log(!true)
console.log(!false)
- 案例代码
<title>练习-判断一个数是4的倍数,且不是100的倍数</title>
</head>
<body>
<script>
//1.用户输入
let num = +prompt('请输入一个数字:')
//2.弹出结果
alert(num % 4 === 0 && num % 100 !== 0)
</script>
</body>
运算符优先级:
- 一元运算符里面的逻辑非优先级很高。
- 逻辑与比逻辑或优先级高。