认识操作符和表达式
操作符 & 表达式
在JavaScript中,操作符用于执行特定的数学或逻辑运算,例如加法、减法、乘法和除法等。
表达式用于将运算符将常量、变量、函数连接起来的式子,至于函数将在第二章具体讲解。
算术操作符
算术操作符 用于执行基本的数学运算。
- 加法 (
+): 用于加法运算。 - 减法 (
-): 用于减法运算。 - 乘法 (
*): 用于乘法运算。 - 除法 (
/): 用于除法运算,结果可以是浮点数。 - 取模 (
%): 返回两数相除的余数。 - 幂 (
**) : 用于指数幂计算。 - 递增 (
++): 将变量的值增加1。 - 递减 (
--): 将变量的值减少1。
实例-数字运算
let a = 3
let b = 10
console.log (a + b) // 13
console.log (a - b) // -7
console.log (a * b) // 30
console.log (a / b) // 0.3
console.log (a % b) // 3
console.log (a ** b) //59049
console.log (a ++) // 3
console.log (a) //4
console.log (++ b) //11
console.log (a --) //4
console.log (a) //3
console.log (-- b) // 102
3
4
5
6
7
8
9
10
11
12
13
14
15
小朋友,细心的你会发现 a++的返回值似乎并没有想预期的一样数值+1,a--的返回值似乎也没有预期的-1;可是当我们再次获取a的值时,a的的确确是运算了的。这是为什么呢?它们不一样吗?是bug吗?
a++与++a,a--与--a它们沦为兄弟,却有着不一样的性质。
[知识扩展] ++ a 与 a ++
hi,我们是++a,a++兄弟
在JavaScript中,我们都用于递增变量的值。可是 我们有着不相同的部分!
我是
++a我 先将变量数值递增
+1,然后返回递增后的数值 \
我是
a++我 先返回变量当前数值,然后递增变量的值
+1
同时 我
++a是老大,我的运算总是首当其冲,具有更高的优先级,我的运算比算数运算符优先。
而我
a++,运算总是慢一拍,我的运算要比算术运算符慢
let a = 5;
console.log (a + ++a) // 11
console.log (a) // 6
console.log (++a + a) // 14
console.log (a) // 7
console.log (a + a++) // 14
console.log (a) // 82
3
4
5
6
7
8
诶?老大,你怎么回事?
(⊙o⊙)…在神岛编辑器中,表达式将按从左到右的顺序计算。
az,我知道了 。
++a先自增后返回,a++先返回后自增
那 我的运算符兄弟们 它们的“速度”(优先级)怎么样呢?
那请看看下去吧
算术表达式
用于算术运算,例如 表达式 2+4*8/2
输出 结果为 float 浮点数
优先级
**指数 列于 最高级优先级,它最快 先被计算*,/等加法减法 它们的速度(优先级)相同,其次计算+,-是最慢的,它们往往被最后计算
| 优先级 | 运算符 |
|---|---|
| 1 | ** |
| 2 | *,/,//,% |
| 3 | +,- |
赋值操作符
赋值操作符用于给变量赋值。
- 简单赋值 (
=): 将右侧表达式的值赋给左侧的变量。 - 复合赋值(如
+=,-=等): 结合算术操作符和赋值操作。
示例:
// 设置age(年龄)为10
let age = 10;
// 设置grade(年级)为4
let grade = 4;
// 设置certificate(奖状)为10
let certificate = 10;
console.log("吉吉喵今年" + age + "岁啦,读" + grade + "年级了!我有" + certificate + "张奖状。");
/* ---------
呼呼呼~~~时间过得真快,已经过了一年啦!
吉吉喵的长了一岁了。
--------- */
age = age + 1; // 因为是加1,也可以写成 age ++
grade ++; // 也可以写成 grade = grade + 1
certificate += 10; // 也可以写成 certificate = certificate + 10
console.log("一年过去了!吉吉喵今年" + age + "岁啦,读" + grade + "年级了!我有" + certificate + "张奖状。");2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
效果如下:

小朋友,你会觉得奇怪,为什么后面的age和grade和certificate前面没用加上let关键字呢?
因为我们在前面已经定义了age和grade和certificate,告诉程序这个名字已经是变量了,后面修改不用特意再次告诉程序了哦!不然就会报错。
课后练习
小朋友,试试模仿上方的代码,编写一个简单的程序吧!
一年前:我地图有10人玩过。
一年后:我地图在原本基础上多了1万人玩过。
点击查看参考答案
