什么是运算符?

127 阅读8分钟

运算符

运算符就是一种告诉编译器执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符。

算术运算符

+ 加法

-减法

*乘法

/ 除法

%取余

计算圆的面积

面积的数学公式: π*r²

转换为JavaScript写法 : 变量 * r * r

let r = rompt('请输入圆的半径')
let s = 3.14 * r * r
conlose.log(s)

JavaScript算术运算符执行的*优先级顺序

同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。

JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行。

➢ 乘、除、取余优先级相同

➢ 加、减优先级相同

➢ 乘、除、取余优先级大于加、减

➢ 使用 () 可以提升优先级

➢ 总结: 先乘除后加减,有括号先算括号里面的

赋值运算符

➢ 已经学过的赋值运算符:= 将等号右边的值赋予给左边, 要求左边必须是一个容器

➢ 其他赋值运算符:

➢ +=

➢ -=

➢ *=

➢ /=

➢ %=

使用这些运算符可以在对变量赋值时进行快速操作

将等号右边的值赋予给左边, 要求左边必须是一个容器

let num =1
num = num+1
console.log(num) //结果是2
//简写方法:
let num =1
num +=1
console.log(num) //结果是2

一元运算符

众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符

二元运算符:let num = 10+20;

一元运算符:* let num = 1

num += 1

一元运算符做自增运算

自增:

➢ 符号:++

➢ 作用:让变量的值 +1

自减:

➢ 符号:--

➢ 作用:让变量的值 -1

使用场景:

经常用于计数来使用。 比如进行10次操作,用它来计算进行了多少次了

let num=1
++num //让num的值加1变2  前置自增
console.log(++num +2) //结果是4let num=1
num++ //让num的值加1变2  后置自增
console.log(num++ +2) //结果是3  第二次使用才加let i=1
console.log(i++ + ++i + i)
             2 +  3 + 3

前后置自增的区别

前置:先自增后运算

后置:先运算后自增

自减同理..

➢ 开发中,我们一般都是单独使用的,后置++ 使用更多

比较运算符

作用:比较两个数据大小,是否相等

Snipaste_2022-03-15_11-16-18.png

字符串比较,是比较的字符对应的ASCII码

NaN不等于任何值,包括它本身

⚫ 尽量不要比较小数,因为小数有精度问题

⚫ 不同类型之间比较会发生隐式转换

最终把数据隐式转换成number类型再比较

所以开发中,如果进行准确的比较 我们更喜欢=== 或者!==

= 和 == 和 === 怎么区别?

➢ = 是赋值

➢ == 是判断 只要求值相等,不要求数据类型一样即可返回true

➢ === 是全等 要求值和数据类型都一样返回的才是true

逻辑运算符

逻辑运算符的介绍

逻辑运算符的使用

符号名称日常读法特点口诀
&&逻辑与并且符号两边都为true 结果才为true一假则假
逻辑或或者符号两边有一个true就为true一真则真
逻辑非取反true变false false变true真1变假,假变真

⚫ 提问:如果我想判断一个数据大于5且小于10,怎么办?

let num = prompt('请输入数字')
console.log(num>=5 && 10>=num)

⚫ 需求:判断这个数能否被4整除 但是不能被100整除。

 let num = +prompt('输入数字')
 console.log(num % 4 == 0 && num % 100 !== 0)

出短路运算符的运算规则

逻辑运算符里的短路

短路:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行

符号短路条件
&&左边为false就短路
左边为true就短路

⚫ 原因:通过左边能得到整个式子的结果,因此没必要再判断右边

⚫ 运算结果:无论 && 还是 || ,运算结果都是最后被执行的表达式值,一般用在变量赋值

注意:

在js中,转换bool为false的值有:0 '' "" undefined null NaN,其它都为true

运算符优先级

掌握运算符优先级,能判断运算符执行的顺序

Snipaste_2022-03-15_14-40-27.png

语句

表达式和语句

表达式和语句的区别

语句:

js 整句或命令,js 语句是以分号结束(可以省略)

比如: if语句 for 循环语句

区别:

表达式计算出一个值,但语句用来自行以使某件事发生(做什么事)

➢ 表达式

3 + 4

➢ 语句

alert() 弹出对话框

其实某些情况,也可以把表达式理解为语句,因为它是在计算结果,也是做事

分支语句

程序三大流程控制语句

⚫ 以前我们写的代码,写几句就从上往下执行几句,这种叫顺序结构

⚫ 有的时候要根据条件选择执行代码,这种就叫分支结构

⚫ 某段代码被重复执行,就叫循环结构

Snipaste_2022-03-15_15-23-29.png

⚫ 分支语句可以让我们有选择性的执行想要的代码

⚫ 分支语句包含:

if分支语句

三元运算符

switch语句

if语句

⚫ if语句有三种使用:单分支、双分支、多分支

单分支使用语法:

if(条件){
满足条件要执行的代码
}

双分支if语法:

if(条件){
满足条件要执行的代码
}else{
不满足条件要执行的代码
}

案例2:让用户输入年份,判断这一年是闰年还是平年并输出

let score = +prompt('输入年份')
        if ((score % 4 == 0 && score % 100 !== 0) || score % 400 === 0) {
            console.log('闰年')
        } else {
            console.log('平年')
        }

案例3:多分支if课堂案例:根据输入不同时间,输出不同的问候语

 let hour = + prompt('输入时间')
        if (hour < 6) {
            console.log('凌晨好')
        } else if (hour < 12) {
            console.log('上午好')
        } else if (hour < 18) {
            console.log('下午好')
        } else if (hour <= 24 || hour > 25) {
            console.log('晚上好')
        } else {
            console.log('你是傻逼吗 哪有这个时间段')
        }

三元表达式

其实是比 if 双分支 更简单的写法,有时候也叫做三元表达式

⚫ 符号:? 与 : 配合使用

⚫ 语法:

⚫ 一般用来取值

条件 ? 满足条件执行的代码 : 不满足条件执行的代码

//输入两个值 输出最大的那个值
let num1 = +prompt('输入第一个值')
        let num2 = +prompt('输入第二个值')
        max = max == num1 > num2 ? num1 : num2
        console.log(max)

switch语句

能利用switch执行满足条件的语句

找到跟小括号里数据全等的case值,并执行里面对应的代码

➢ 若没有全等 ===的则执行default里的代码

➢ 例:数据若跟值2全等,则执行代码2

简单计算器

 let num1 = +prompt('输入第一个值')
        let num2 = +prompt('输入第二个值')
        let opt = prompt('输入算法')
        if (opt == '+') {
            opt = num1 + num2
        } else if (opt == '-') {
            opt = num1 - num2
        } else if (opt == '*') {
            opt = num1 * num2
        } else {
            if (num2 == 0) {
                alert('0不能被除')
            } else {
                opt = num1 / num2
​
            }
        }

循环

循环结构**

断点调试

作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug

⚫ 浏览器打开调试界面

  1. 按F12打开开发者工具
  2. 点到sources一栏
  3. 选择代码文件

⚫ 断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来

// while循环:满足条件,就重复做一个事件
// 语法:while(循环条件){循环体--循环操作}
// while:关键字,固定写死
// 循环条件:它是一个bool值,一般是条件表达式或者是逻辑表达式,也可以是一个变量,如果是一个变量,它会自动的进行类型转换,转换为bool值:在js中转换为bool结果为false的有:'' "" 0 undefined null NaN
// 特性:只要满足条件就会重复执行这个操作
// 细节:循环一定要考虑什么时候结构,循环一定要有结构条件

循环的执行过程:

循环条件满足 》》执行循环体(让变量+1) 》》条件判断(满足) 》》执行循环体 》》 条件判断(满足) 》》 执行循环体 。。。。判断条件(不满足) 》》 退出循环

调试断点:

打开网页》》打开检查》》打开sources》》点击文件》》

for循环嵌套

for(外部声明记录循环次数的变量;循环条件;变量值){
    for(内部声明记录循环次数的变量;循环条件;变化值){
       循环体
    }
}

案例:

页面中打印出3行5列的星星★

let sum = ''
        for (i = 0; i <= 5; i++) {
            sum += '😔'
        }
        console.log(sum);

while循环

while(循环条件){
  要重复执行的代码(循环体)
}

循环:重复执行某段代码, 而 while : 在…. 期间

2. while 循环注意事项:

循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。

所以,循环需要具备三要素:

  1. 变量起始值
  2. 终止条件(没有终止条件,循环会一直执行,造成死循环)
  3. 变量变化量(用自增或者自减)

页面弹框(案例)

页面弹出对话框, '你爱我吗',如果输入'爱‘,则结束,否则一直弹出对话框

 let ai = prompt('你爱不爱我')
        while (ai !== '爱') {
            ai = prompt('你爱不爱我')
        }
​

提款机案例

需求:用户可以选择存钱、取钱、查看余额和退出功能

let money = 1000
        let choice = undefined
        while (choice != 4) {
            choice = +prompt(`请执行操作:
                        1.取款
                         2.存款
                         3.查看余额
                         4.退出`)
            if (choice == 1) {
                let out = +prompt('请输入取款金额')
                if (out <= money) {
                    money = money - out
                } else {
                    alert('余额不足')
                }
            } else if (choice == 2) {
                let cun = +prompt('请输入存款金额')
                money += cun
            } else if (choice == 3) {
                alert(`这是你的余额${money}`)
            } else if (choice == 4) {
            }
        }

for和while:

知道循环次数的时候推荐使用for循环

不知道循环次数的时候使用while循环