JavaScript基础(二)—— 运算符、表达式与语句(if、switch、循环)

学习目标:

  1. 掌握常见运算符,为程序“能思考”做准备

  2. 掌握分支语句,让程序具备判断能力

  3. 掌握循环语句,让程序具备重复执行能力

一、运算符

1.  赋值运算符

对变量进行赋值的运算符,能够使用赋值运算符简化代码。

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

  • 其他赋值运算符:+=、-=、*=、/=、%=

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

2. 一元运算符

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

  • 自增:++,作用,让变量的值 +1

  • 自减:--,作用,让变量的值 -1

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

  • 自增运算符的用法:

前置自增:先自加再使用

后置自增:先使用再自加

1. 前置自增和后置自增单独使用没有区别

2. 一般开发中我们都是独立使用

3. 后面 i++ 后置自增会使用相对较多,并且都是单独使用

let i = 1
console.log(i++ + ++i + i)

3. 比较运算符

比较运算符的介绍,使用场景:比较两个数据大小、是否相等。

  • 比较运算符:

  1. > : 左边是否大于右边

  2. <: 左边是否小于右边

  3. >=: 左边是否大于或等于右边

  4. <=: 左边是否小于或等于右边

  5. ==: 左右两边值是否相等

  6. ===: 左右两边是否类型和值都相等

  7. !==: 左右两边是否不全等

比较结果为boolean类型,即只会得到 true 或 false。

对比:

= 单等是赋值

== 是判断

=== 是全等

开发中判断是否相等,强烈推荐使用 ===

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

从左往右依次比较,如果第一位一样再比较第二位,以此类推。

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

涉及到"NaN“ 都是 false。

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

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

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

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

4. 逻辑运算符

掌握逻辑运算符,为程序“能思考”做准备。

提问:如果我想判断一个变量 num 是否大于5且小于10,怎么办?

错误写法:

5 < num < 10

使用场景:逻辑运算符用来解决多重条件判断

正确写法:

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

5. 运算符优先级

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

  • 一元运算符里面的逻辑非优先级很高
  • 逻辑与逻辑或 优先级高
let a = 3 > 5 && 2 < 7 && 3 == 4
console.log(a);  
​
let b = 3 <= 4 || 3 > 1 || 3 != 2 
console.log(b); 
​
let c = 2 === "2"
console.log(c);  
​
let d = !c || b && a 
console.log(d);

二、语句

1. 表达式和语句

  • 表达式

表达式是可以被求值的代码,JavaScript 引擎会将其计算出一个结果。

  • 语句

语句是一段可以执行的代码。

比如: prompt() 可以弹出一个输入框,还有 if语句 for 循环语句等等

  • 区别

    • 表达式:因为表达式可被求值,所以它可以写在赋值语句的右侧。
    • 语句:而语句不一定有值,所以比如 alert() for和break 等语句就不能被用于赋值。
    • 某些情况,也可以把表达式理解为表达式语句,因为它是在计算结果,但不是必须的成分 (例如continue语句)

2. 分支语句

掌握流程控制,写出能“思考”的程序。

程序三大流程控制语句

  1. 从上往下执行几句,这种叫顺序结构

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

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

分支语句

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

分支语句包含:

  1. If分支语句

  2. 三元运算符

  3. switch 语句

if语句

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

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

括号内的条件为true时,进入大括号里执行代码

小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型

如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做

三元运算符

使用场景: 其实是比 if 双分支 更简单的写法,可以使用 三元表达式,一般用来取值

符号:? 与 : 配合使用

switch语句

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

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

  1. switch case语句一般用于等值判断,不适合于区间判断

  2. switch case一般需要配合break关键字使用, 没有break会造成case穿透

循环结构

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

  • 浏览器打开调试界面

1.点到浏览器按F12打开开发者工具

2.Sources一栏

3.选择代码文件

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

while 循环

循环:重复执行一些操作

while : 在…. 期间, 所以 while循环 就是在满足条件期间,重复执行某些代码。

跟if语句很像,都要满足小括号里的条件为true才会进入 循环体 执行代码

while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出

while循环三要素:

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

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

1.变量起始值

2.终止条件(没有终止条件,循环会一直执行,造成死循环)

3.变量变化量(用自增或者自减)

循环退出
  1. continue:结束本次循环,继续下次循环

  2. break:跳出所在的循环

区别:

  1. continue 退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue

  2. break 退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用

for 循环

好处:把声明起始值、循环条件、变化值写到一起,让人一目了然,它是最常使用的循环形式

  1. while(true) 来构造“无限”循环,需要使用break退出循环。

  2. for(;;) 也可以来构造“无限”循环,同样需要使用break退出循环

for循环和while循环有什么区别

  1. 当如果明确了循环的次数的时候推荐使用for循环

  2. 当不明确循环的次数的时候推荐使用while循环

for循环嵌套:一个循环里再套一个循环,一般用在for循环里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/363667.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【解决视网膜长尾数据】关系子集学习、射击法、加权知识蒸馏

长尾分布下的视网膜&#xff1a;关系子集学习、射击法、加权知识蒸馏 核心思想问题&#xff1a;类别分布的不平衡问题问题&#xff1a;共现标签问题&#xff1a;特定区域和特征的类别关联解法&#xff1a;划分子集解决样本不平衡问题解法&#xff1a;射击法解决共现标签问题解法…

【缓存周总结】Redis缓存的使用以及数据安全的处理

前言 Redis非关系型数据库已经是很常见的工具了&#xff0c;项目中用到的也很多&#xff0c;这篇文章系统的分析下使用过程中可能会遇到的问题 一、缓存 缓存是数据交换的缓冲区&#xff0c;是存贮数据的临时地方&#xff0c;一般读写性能较高。 我们项目中引用的Redis目的就是…

Unity - 调节camera物理相机参数(HDRP)

在 “Hierarchy” 右键 -> Volume -> Global Volume new 一个 profile, 设置Mode为Pysical Camera 再点击camera组件&#xff0c;这时候设置 ISO、Shutter Speed、Aperture等参数值还会有效。

深入了解如何对IPA包进行有效的混淆处理

1、安装混淆工具 首先电脑上要安装ipagurad工具&#xff0c;官网链接&#xff1a;IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具 2、生成混淆文件 由于混淆需要首先 打开要处理的IPA文件 第一项&#xff0c;填写我们需要重签名的 ipa 路径&#xff08;当前导入的路径跟导…

跟着pink老师前端入门教程-day16

二十七、CSS3进阶 1、CSS3 2D转换 转换&#xff08;transform&#xff09;是CSS3中具有颠覆性的特征之一&#xff0c;可以实现元素的位移、旋转、缩放等效果 转换&#xff08;transform&#xff09;可以简单理解为变形 移动&#xff1a;translate&#xff1b;旋转&#xff…

【LVGL源码移植】

LVGL源码移植 ■ LVGL源码移植一&#xff1a;下载LVGL源码二&#xff1a;修改LVGL文件夹1: 将这5个文件&#xff0c;复制到一个新的文件夹2: 简化文件&#xff0c;减少内存消耗&#xff08;去除不必要的文件&#xff09;3: 为了规范化&#xff0c;我们将下列文件进行重命名 三&…

nodejs+vue+ElementUi宠物领养救助网站0w6wc

宠物领养救助平台采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写&#xff0c;使用了vue框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对用户、宠物类别、宠物…

七、并发工具(上)

一、自定义线程池 1&#xff09;背景&#xff1a; 在 QPS 量比较高的情况下&#xff0c;我们不可能说所有的访问都创建一个线程执行&#xff0c;这会导致内存占用过高&#xff0c;甚至有可能出现 out of memory另外也要考虑 cpu 核数&#xff0c;如果请求超过了cpu核数&#…

【多个SpringBoot模块项目如何变成聚合项目】

【前言】 项目虽然是Eureka、OpenFeign 进行服务注册和服务调用&#xff0c;但是每个模块都是一个单独的SpringBoot&#xff0c;启动每个模块都需要单独启动一个idea,觉得这个过于繁琐&#xff0c;现在想把项目变成一个聚合项目&#xff0c;只需要启动一个idea即可。 【过程】…

09. 异常处理

目录 1、前言 2、常见的异常 3、异常处理try...except...finally 4、异常信息解读 5、raise 6、自定义异常 7、小结 1、前言 在编程中&#xff0c;异常&#xff08;Exception&#xff09;是程序在运行期间检测到的错误或异常状况。当程序执行过程中发生了一些无法继续执…

vue前端html导出pdf

package.json中添加依赖 调用方&#xff1a; import htmlToPdf from ../../../utils/file/htmlToPdf.js// 下载方法&#xff0c;pdfDownloadDpi为onClickDownLoad() {htmlToPdf.getPdf(标题1, jsfgyzcpgxmShow, this.pdfDownloadDpi)}htmlToPdf.js // 页面导出为pdf格式 imp…

Backtrader 文档学习- Broker - Cheat-On-Open

Backtrader 文档学习- Broker - Cheat-On-Open 1.概述 V1.9.44.116增加了Cheat On Open的支持。对于全押的人来说&#xff0c;这似乎是一个必需的功能&#xff0c;用bar的收盘价后进行计算&#xff0c;希望与开盘价相匹配。 当开盘价差距&#xff08;上涨或下跌&#xff0c;取…

杂题——试题-算法训练-P0602

分析&#xff1a; 把要重排序的数字转成数组对数组进行排序&#xff0c;从小到大排序数组转成字符串&#xff0c;字符串转成数字&#xff0c;得到最小数再把最小数的字符串反转&#xff0c;得到最大数注意&#xff1a; 在java语言中&#xff0c;如果使用Arrays.toString(digits…

DevOps系列文章之 Git命令:过滤日志

使用git log命令查找特定提交历史的高级技巧。其中的一些技巧配合格式化日志命令使用有奇效。 按照数量过滤 使用git log命令时最基本的过滤方式就是按照可以显示的日志条数进行过滤。如果你只对最近几次提交感兴趣&#xff0c;这会节省在页面上查看所有提交的麻烦。 git lo…

成熟的汽车制造供应商协同平台 要具备哪些功能特性?

汽车行业是一个产业链长且“重”的行业&#xff0c;整个业务流程包括了研发、设计、采购、库存、生产、销售、售后等一系列环节&#xff0c;在每一个环节都涉及到很多信息交换的需求。对内要保证研发、采购、营销等业务环节信息流通高效安全&#xff0c;对外要与上、下游合作伙…

springboot-前后端分离——第一篇

本篇主要对前后端分离的一些基础知识进行总结&#xff0c;主要对HTTP请求协议、HTTP响应格式、Http协议解析等进行总结。重点在于简单了解前端如何向服务端发送请求&#xff0c;服务端如何接收请求并返回响应结果。 一、简单案例&#xff1a; 首先创建一个springboot项目&…

使用pygame建立一个简单的使用键盘方向键移动的方块小游戏

import pygame import sys# 初始化pygame pygame.init()# 设置窗口大小 screen_size (640, 480) # 创建窗口 screen pygame.display.set_mode(screen_size) # 设置窗口标题 pygame.display.set_caption("使用键盘方向键移动的方块的简单小游戏")# 设置颜色 bg_colo…

帅气的性能监控平台Grafana(Windows下使用Grafana监控系统指标与GPU指标)

帅气的性能监控平台Grafana&#xff08;Windows下使用Grafana监控系统指标与GPU指标&#xff09; 前情提要 系统环境准备 windows_exporter下载 nvidia_gpu_exporter下载 prometheus下载 Grafana下载 安装指导 windows_exporter安装与nvidia_gpu_exporter安装 promethe…

ApacheNginx配置ssl证书

一、Apache配置ssl Linux版本&#xff1a;CentOS Linux release 7.9.2009 (Core) Apache版本&#xff1a;Apache/2.4.6 (CentOS) 1、安装Apache&#xff08;使用默认yum源&#xff09; [root10-35-1-25 ~]# yum -y install httpd2、查Apache版本&启动Apache [root10-35-…

深度解读NVMe计算存储协议-2

近日&#xff0c;NVME协议组织为了解决这些性能问题并为供应商提供标准化机制&#xff0c;在其架构中集成优化的计算功能&#xff0c;开发了NVM Express (NVMe) 计算存储特性。 计算存储的核心特性包括两个命令集&#xff1a;计算程序集和子系统本地内存。 其中&#xff0c;计算…