Java Web——JavaScript运算符与流程语句

1. 运算符

1.1. 算数运算符

数字是用来计算的,比如:乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。

算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等

运算符

作用

+

求和

-

求差

*

求积

/

求商

%

取模(取余数)

加法(+):

let a = 5;
let b = 3;
let sum = a + b;
console.log(sum); // 输出:8

减法(-):

let a = 5;
let b = 3;
let difference = a - b;
console.log(difference); // 输出:2

乘法(*):

let a = 5;
let b = 3;
let product = a * b;
console.log(product); // 输出:15

除法(/):

let a = 10;
let b = 2;
let quotient = a / b;
console.log(quotient); // 输出:5

取余(%):

let a = 10;
let b = 3;
let remainder = a % b;
console.log(remainder); // 输出:1,因为10除以3余数为1。

1.2. 赋值运算符

赋值运算符:对变量进行赋值的运算符

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

运算符

作用

+=

加法赋值

-+

减法赋值

*=

乘法赋值

/=

除法赋值

%=

取余赋值

let a = 10;  
let b = 5;  
  
// 加法赋值运算符 +=   
a += b; // 这行代码等同于 a = a + b; ,所以 a 的值会变成 15  
console.log(a); // 输出:15  
  
// 减法赋值运算符 -=   
a -= b; // 这行代码等同于 a = a - b; ,所以 a 的值会变回 10  
console.log(a); // 输出:10  
  
// 乘法赋值运算符 *=   
a *= b; // 这行代码等同于 a = a * b; ,所以 a 的值会变成 50  
console.log(a); // 输出:50  
  
// 除法赋值运算符 /=   
a /= b; // 这行代码等同于 a = a / b; ,所以 a 的值会变成 10  
console.log(a); // 输出:10  
  
// 取余赋值运算符 %=  
a %= b; // 这行代码等同于 a = a % b; ,所以 a 的值会变成 0  
console.log(a); // 输出:0

1.3. 自增/自减运算符

在JavaScript中,自增和自减是特殊的运算符,用于增加或减少变量的值。

  1. 自增运算符 (++)
    这个运算符会将变量值增加1。它有两种使用方式:前缀和后缀。
  • 前缀形式:++variable,首先增加变量的值,然后返回增加后的值。
  • 后缀形式:variable++,首先返回变量的原始值,然后增加变量的值。

例如:

let count = 5;
console.log(++count);  // 输出:6,先自增,然后打印
console.log(count);    // 输出:6,打印当前的值

let count2 = 5;
console.log(count2++); // 输出:5,先打印,然后自增
console.log(count2);  // 输出:6,打印自增后的值

  1. 自减运算符 (--)
    这个运算符会将变量值减少1。它也有两种使用方式:前缀和后缀。
  • 前缀形式:--variable,首先减少变量的值,然后返回减少后的值。
  • 后缀形式:variable--,首先返回变量的原始值,然后减少变量的值。

例如:

let count = 5;
console.log(--count);  // 输出:4,先自减,然后打印
console.log(count);    // 输出:4,打印当前的值

let count2 = 5;
console.log(count2--); // 输出:5,先打印,然后自减
console.log(count2);  // 输出:4,打印自减后的值

1.4. 比较运算符

使用场景:比较两个数据大小、是否相等,根据比较结果返回一个布尔值(true / false)

1.4.1. 常见比较运算符

运算符

作用

>

左边是否大于右边

<

左边是否小于右边

>=

左边是否大于或等于右边

<=

左边是否小于或等于右边

==

左右两边值是否相等

!=

左右值不相等

  1. 大于(>)运算符:
let result = 10 > 5; // 检查10是否大于5
console.log(result); // 输出:true

  1. 小于(<)运算符:
let result = 5 < 10; // 检查5是否小于10
console.log(result); // 输出:true

  1. 大于或等于(>=)运算符:
let result = 10 >= 10; // 检查10是否大于或等于10
console.log(result); // 输出:true

  1. 小于或等于(<=)运算符:
let result = 5 <= 10; // 检查5是否小于或等于10
console.log(result); // 输出:true

  1. 等于(==)运算符:
let result = '5' == 5; // 检查字符串'5'是否等于数字5,这里会发生类型转换
console.log(result); // 输出:true

  1. 不等于(!=)运算符:
let result = '5' != 5; // 检查字符串'5'是否不等于数字5
console.log(result); // 输出:false,因为在==运算符中,字符串和数字可以进行类型转换,所以这里字符串'5'和数字5是相等的,因此不等于运算结果为false。

1.4.2. 比较重要的两个比较运算符

!==

左右两边是否不全等

===

左右两边是否类型和值都相等(重点)

  1. !== 运算符

!== 是一个“不全等”运算符。当使用 !== 进行比较时,如果两个值的类型不同,或者两个值的类型相同但内容不同,那么结果为 true。也就是说,只有当两个值的类型和内容都完全相同时,结果才为 false

例如:

console.log(5 !== '5');  // 输出:true,因为数字5和字符串'5'类型不同
console.log(10 !== 10); // 输出:false,因为数字10和数字10类型和值都相同

  1. === 运算符

!== 相对应,=== 是一个“全等”运算符。当使用 === 进行比较时,它会同时检查两个值的类型和内容是否都相同。只有当两个值的类型和内容都完全相同时,结果才为 true。否则,结果为 false

例如:

console.log(5 === '5');  // 输出:false,因为数字5和字符串'5'类型不同
console.log(10 === 10); // 输出:true,因为数字10和数字10类型和值都相同

  1. 为什么使用 ===!== ?

使用 ===!== 的好处是它们可以防止JavaScript的自动类型转换,这在某些情况下可能会导致一些意想不到的问题。特别是在比较涉及到字符串和数字的情况时,使用 == 可能会导致错误的结果,因为它会尝试将字符串转换为数字进行比较。而 ===!== 不会进行这样的类型转换,因此它们提供了更准确、更可预测的比较结果。

所以,为了确保比较的准确性和避免可能出现的错误,通常推荐在JavaScript中使用 ===!== 运算符。


1.5. 逻辑运算符

在JavaScript中,可以使用这些逻辑运算符来操作布尔值,他们分别是&&(逻辑与)、||(逻辑或)和!(逻辑非)。

  1. &&(逻辑与):当且仅当两个操作数都为 true 时,结果才为 true。如果其中一个操作数为 false,结果就为 false。这就是“一假则假”的原则。
console.log(true && true);  // 输出:true
console.log(true && false); // 输出:false
console.log(false && true); // 输出:false
console.log(false && false); // 输出:false

  1. ||(逻辑或):只要两个操作数中有一个为 true,结果就为 true。只有当两个操作数都为 false 时,结果才为 false。这就是“一真则真”的原则。
console.log(true || true);  // 输出:true
console.log(true || false); // 输出:true
console.log(false || true); // 输出:true
console.log(false || false); // 输出:false

  1. !(逻辑非):逻辑非运算符用于翻转操作数的逻辑状态。如果操作数为 true,结果就为 false。如果操作数为 false,结果就为 true。这就是“真变假,假变真”的原则。
console.log(!true);  // 输出:false
console.log(!false); // 输出:true

2. 流程控制语句

2.1. 分支语句

分支语句。分支语句用于根据某些条件来决定执行哪些代码。简单来说,它们帮助程序在多个选项中选择执行路径。


分支语句:是程序中用于做选择的语句。想象一下,你到了一个交叉路口,你需要根据某些标志或信号来决定往哪个方向走。分支语句在程序中就起到了这样的作用。

  • if分支语句(重点):这是最常见的分支语句。它根据一个条件的真假来决定执行哪段代码。例如,如果说“如果天气好,我就出去玩”,那么“天气好”就是一个条件,根据这个条件是否为真,来决定是否执行“出去玩”这个动作。
  • 三元运算符:这是一个简短的if-else结构。它有三个部分,所以叫做三元运算符。它通常用于简单的条件判断。例如,在某些语言中,它可能是这样的:条件 ? 结果1 : 结果2。这意味着,如果条件为真,则结果为结果1,否则为结果2。
  • switch语句:用于多个选项的选择。当你有一个变量,并希望根据这个变量的不同值来执行不同的代码块时,可以使用switch语句。例如,一个星期有7天,根据星期的值(1到7)来决定做什么活动。

2.1.1. if分支语句

if语句用于根据条件执行代码块。它有两种常见形式:if语句和if...else语句。

if语句

let number = 10;

if (number > 5) {
  console.log("数字大于5");
}

上述代码中,如果number大于5,将输出"数字大于5"。

if...else语句

let number = 10;

if (number > 5) {
  console.log("数字大于5");
} else {
  console.log("数字小于等于5");
}

上述代码中,如果number大于5,将输出"数字大于5",否则输出"数字小于等于5"。

if...else if...else语句

这是一种更灵活的if语句形式,允许在多个条件之间进行判断,执行第一个满足条件的代码块。如果没有条件满足,也可以使用else语句来执行默认的代码块。

let number = 3;  
  
if (number === 1) {  
  console.log("数字是1");  
} else if (number === 2) {  
  console.log("数字是2");  
} else if (number === 3) {  
  console.log("数字是3");  
} else {  
  console.log("数字不是1、2或3");  
}

在上述代码中,根据number的值,逐个判断条件,执行第一个满足条件的代码块。如果number等于1,则输出"数字是1";如果number等于2,则输出"数字是2";如果number等于3,则输出"数字是3"。如果number的值没有匹配任何条件,将执行最后的else语句,输出"数字不是1、2或3"。

2.1.2. 三元运算符

三元运算符是一种简洁的if...else语句,它在一行代码中完成条件判断和操作。

示例代码:

let number = 10;
let message = (number > 5) ? "数字大于5" : "数字小于等于5";
console.log(message);

上述代码中,根据number是否大于5,将相应的消息赋值给message变量,并输出该消息。

2.1.3. switch语句

switch语句用于根据表达式的值执行不同的代码块。它可以替代多个if...else语句,使代码更清晰和易读。

示例代码:

let dayOfWeek = 2;

switch (dayOfWeek) {
  case 1:
    console.log("星期一");
    break;
  case 2:
    console.log("星期二");
    break;
  default:
    console.log("其他星期");
}

上述代码中,根据dayOfWeek的值,执行相应的case代码块,并输出对应的星期。如果dayOfWeek的值没有匹配的case,将执行default代码块。


2.2. 循环语句

2.2.1. while循环

while循环是一种前测试循环,这意味着在执行循环体内的代码块之前,先检查循环条件。如果条件为真,则执行循环体,然后再次检查条件。这个过程会一直重复,直到条件为假时停止循环

let count = 0; // 初始化计数器

while (count < 5) { // 在每次迭代前检查条件
    console.log(count); // 打印当前计数器的值
    count++; // 计数器递增
}
// 输出: 0, 1, 2, 3, 4

2.2.2. do...while循环

与while循环相比,do...while循环是一种后测试循环。这意味着它会先执行一次循环体内的代码块,然后再检查循环条件。如果条件为真,则再次执行循环体,并重复此过程。如果条件为假,则停止循环。

let count = 0; // 初始化计数器

do {
    console.log(count); // 打印当前计数器的值
    count++; // 计数器递增
} while (count < 5); // 在每次迭代后检查条件
// 输出: 0, 1, 2, 3, 4

2.2.3. for循环

for循环是一种更紧凑和常用的循环结构。它在单个语句中包含了初始化、条件和增量三个部分。

for (let count = 0; count < 5; count++) { // 初始化、条件和增量合并到一个语句中
    console.log(count); // 打印当前计数器的值
}
// 输出: 0, 1, 2, 3, 4

初始化:let count = 0

循环条件:count < 5

循环增量:count++


3. 数组

数组就好比是一个容器,可以存放多个相同类型的值,并且这些值都有一个从0开始的编号,这个编号就是索引。我们可以使用这个索引来访问、修改或操作数组中的元素。

3.1. 创建数组

使用数组字面量定义:这是最常见且最简洁的方式来定义数组。数组字面量是一个包含一系列元素的列表,每个元素之间由逗号分隔,并包围在方括号([ ])中。

	// 1. 语法,使用 [] 来定义一个空数组
  // 定义一个空数组,然后赋值给变量 classes
  let classes = [];

  // 2. 定义非空数组
  let classes = ['小明', '小刚', '小红', '小丽', '小米']

通过 [] 定义数组,数据中可以存放真正的数据,如小明、小刚、小红等这些都是数组中的数据,我们这些数据称为数组单元,数组单元之间使用英文逗号分隔。


3.2. 访问数组和数组索引

使用数组存放数据并不是最终目的,真正的目的是能够随时访问数组中的数据。这意味着数组不仅仅是一个存储数据的结构,更重要的是它能够让我们在需要的时候快速获取到数据。

为了达到这个目的,JavaScript为数组中的每一个数据单元都编了号。这些编号被称为索引值或下标。通过索引值,我们可以轻松地访问到数组中的数据单元。

例如,如果我们有一个数组arr,它包含三个元素,那么我们可以通过索引值来访问这些元素:arr[0]、arr[1]和arr[2]。这里的0、1和2就是索引值。


let fruits = ['苹果', '香蕉', '橙子', '葡萄', '西瓜']  
  
// 1. 访问数组  
document.write(fruits[0]) // 结果为:苹果  
document.write(fruits[2]) // 结果为:橙子  
document.write(fruits[4]) // 结果为:西瓜  
  
// 2. 通过索引值重新为数组赋值  
document.write(fruits[1]) // 结果为:香蕉  
// 重新为索引值为 1 的元素赋值  
fruits[1] = '黄香蕉'  
document.write(fruits[1]) // 结果为:黄香蕉

3.3. 数组长度

  1. 数组长度的获取
    每个JavaScript数组都有一个length属性,这个属性返回数组的最大索引加一。这意味着它通常返回数组中元素的数量。例如:
var arr = [1, 2, 3, 4, 5];  
console.log(arr.length);  // 输出:5

  1. 数组长度的设置
    length属性不仅是只读的,还可以设置。如果你设置数组的length为一个新的值,数组的长度就会改变。如果新的长度比原来的长度小,那么超出新长度的元素将会被删除。如果新的长度比原来的长度大,那么新的元素将会被添加到数组的末尾,这些新元素的值为undefined。例如:
var arr = [1, 2, 3, 4, 5];  
arr.length = 3;  
console.log(arr);  // 输出:[1, 2, 3]  
  
arr.length = 5;  
console.log(arr);  // 输出:[1, 2, 3, undefined, undefined]

3.4. 数组操作

  1. push:动态向数组的尾部添加一个元素。
var arr = [1, 2, 3, 4];
arr.push(5);
console.log(arr);  // 输出:[1, 2, 3, 4, 5]

  1. unshift:动态向数组的头部添加一个元素。
var arr = [1, 2, 3, 4];
arr.unshift(0);
console.log(arr);  // 输出:[0, 1, 2, 3, 4]

  1. pop:删除数组的最后一个元素。
var arr = [1, 2, 3, 4];
var lastElement = arr.pop();
console.log(arr);  // 输出:[1, 2, 3]
console.log(lastElement);  // 输出:4

  1. shift:删除数组的第一个元素。
var arr = [1, 2, 3, 4];
var firstElement = arr.shift();
console.log(arr);  // 输出:[2, 3, 4]
console.log(firstElement);  // 输出:1

  1. splice:动态删除任意元素。splice方法可以在任何位置删除元素,它接受两个参数,第一个参数是要开始删除的索引,第二个参数是要删除的元素数量。
var arr = [1, 2, 3, 4];
arr.splice(2, 1);  // 从索引2开始,删除1个元素
console.log(arr);  // 输出:[1, 2, 4]

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

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

相关文章

【数据分享】2023年我国省市县三级的科技型中小企业数量(Excel/Shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平&#xff01;比如一个城市的金融企业较多&#xff0c;那这个城市的金融产业肯定比较发达&#xff1b;一个城市的制造业企业较多&#xff0c;那这个城市的制造业肯定比较发达。 之前我们给大家分享了…

2020年06月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 如下图所示脚本运行的结果是()? A:画一条直线 B:画一个三角形 C:画一个圆形 D:画一条虚线 答案:D 第2题 运行如下图所示脚本,下面选项中说法错误的是? A:“笔的颜色”…

使用Redis实现分布式锁

Hi, I’m Shendi 使用Redis实现分布式锁 需求场景 需要使用到分布式锁的场景非常多&#xff0c;例如抢单等并发场景&#xff0c;这里举一个例子。 有一个商品&#xff0c;限量出售100个&#xff0c;一个用户下单&#xff0c;数量就减少一个&#xff0c;当剩下最后一个时&…

[深度学习]卷积神经网络的概念,入门构建(代码实例)

# 不再任何人,任何组织的身上倾注任何的感情,或许这就是能活得更开心的办法 0.写在前面: 卷积神经网络的部分在之前就已经有所接触,这里重新更全面地总结一下关于深度学习中卷积神经网络的部分.并且在这里对如何构建代码,一些新的思想和网络做出一点点补充,同时会持续更新一些…

Mac 安装 protobuf 和Android Studio 使用

1. 安装,执行命令 brew install protoc 2. Mac 错误提示&#xff1a;zsh: command not found: brew解决方法 解决方法&#xff1a;mac 安装homebrew&#xff0c; 用以下命令安装&#xff0c;序列号选择中科大&#xff08;1&#xff09;或 阿里云 /bin/zsh -c "$(curl…

掌握Shell:从新手到编程大师的Linux之旅

1 shell介绍 1.1 shell脚本的意义 1.记录命令执行的过程和执行逻辑&#xff0c;以便以后重复执行 2.脚本可以批量处理主机 3.脚本可以定时处理主机 1.2 脚本的创建 #!/bin/bash # 运行脚本时候执行的环境1.3 自动添加脚本说明信息 /etc/vimrc # vim主配置文件 ~/.vimrc # 该…

C语言开发者的利器:gcc编译命令指南

本文主要介绍gcc编译c语言过程&#xff0c;以及常用命令 文章目录 C语言编译过程1. 预处理&#xff08;Preprocessing&#xff09;&#xff1a;2. 编译&#xff08;Compiling&#xff09;&#xff1a;3. 汇编&#xff08;Assembling&#xff09;&#xff1a;4. 链接&#xff08…

适用于 Windows 的 10 个最佳视频转换器:快速转换高清视频

您是否遇到过由于格式不兼容而无法在您的设备上播放视频或电影的情况&#xff1f;您想随意播放从您的相机、GoPro 导入的视频&#xff0c;还是以最合适的格式将它们上传到媒体网站&#xff1f;您的房间里是否有一堆 DVD 光盘&#xff0c;想将它们转换为数字格式以便于播放&…

深度模型压缩研究回顾

深度模型压缩研究回顾 作者&#xff1a;安静到无声 个人主页 目录 深度模型压缩研究回顾推荐专栏 在本节中&#xff0c;主要介绍了目前主流的深度神经网络压缩与加速方法&#xff0c;主要包括轻量化网络设计、参数量化、知识蒸馏、模型剪枝和硬件加速等&#xff0c;其中模型剪…

Linux系统中sh脚本编写

文章目录 Linux系统中sh脚本编写1.在编写sh脚本前了解一下基本语法1.1 if语句单分支双分支多分枝 1.2 for语法 2. 自己写的demo &#xff1a;自动部署前端项目 &#xff08;自动拉取代码&#xff0c;打包&#xff0c;部署nginx&#xff09;3.定时执行 shell脚本 Linux系统中sh脚…

性能分析工具的使用

文章目录 1. 数据库服务器调优的步骤2. 查看系统性能参数3. 统计SQL的查询成本&#xff1a;last_query_cost4. 定位执行慢的SQL&#xff1a;慢查询日志4.1 开启slow_query_log4.2 修改long_query_time阈值4.3 查看慢查询数目4.4 慢查询日志分析工具&#xff1a;mysqldumpslow 5…

work环境配置

1.计算机右键找到属性 2.配置环境变量 3.新加环境变量 4.修改环境变量path .bat文件内容 php ApplicationsChatstart_register.php ApplicationsChatstart_gateway.php ApplicationsChatstart_businessworker.php pause

App测试入门

App测试基础知识 App测试&#xff0c;是指对移动应用软件&#xff08;如手机app、平板app等&#xff09;进行全面和系统的测试&#xff0c;以确保其功能、性能、安全性、稳定性、兼容性等方面能满足用户的使用需求和期望。 App常见运行系统 IOS系统&#xff1a; IOS系统是苹果公…

MLC-LLM 支持RWKV-5推理以及对RWKV-5的一些思考

自从2023年3月左右&#xff0c;chatgpt火热起来之后&#xff0c;我把关注的一些知乎帖子都记录到了这个markdown里面&#xff0c;&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/large-language-model-note &#xff0c;从2023年3月左右到现…

编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。

编写程序&#xff0c;要求输入x的值&#xff0c;输出y的值。分别用&#xff08;1&#xff09;不嵌套的if语句&#xff08;2&#xff09;嵌套的if语句&#xff08;3&#xff09;if-else语句&#xff08;4&#xff09;switch语句。 选择结构是编程语言中常用的一种控制结构&…

OpenGL 的学习之路-4(变换)

三大变换&#xff1a;平移、缩放、旋转&#xff08;通过这三种变换&#xff0c;可以将图像移动到任意位置&#xff09; 其实&#xff0c;这背后对应的数学在 闫令琪 图形学课程 中有过一些了解&#xff0c;所以&#xff0c;理解起来也不觉得很困难。看程序吧。 1.画三角形&am…

量化交易:公司基本面的量化

公司的基本面因素一直具备滞后性&#xff0c;令基本面的量化出现巨大困难。而从上市公司的基本面因素来看&#xff0c;一般只有每个季度的公布期才会有财务指标的更新&#xff0c;而这种财务指标的滞后性对股票表现是否有影响呢&#xff1f;如何去规避基本面滞后产生的风险呢&a…

网站SEO优化

网站SEO优化 浏览722 一、合理的title、description、keywords 搜索对着三项的权重逐个减小&#xff0c;title值强调重点即可&#xff1b;description把页面内容高度概括&#xff0c;不可过分堆砌关键词&#xff1b;keywords列举出重要关键词。 1、title title&#xff0c;…

【教3妹学编程-java基础6】详解父子类变量、代码块、构造函数执行顺序

-----------------第二天------------------------ 本文先论述父子类变量、代码块、构造函数执行顺序的结论&#xff0c; 然后通过举例论证&#xff0c;接着再扩展&#xff0c;彻底搞懂静态代码块、动态代码块、构造函数、父子类、类加载机制等知识体系。 温故而知新&#xff…

ZYNQ_project:LCD

模块框图&#xff1a; 时序图&#xff1a; 代码&#xff1a; /* // 24h000000 4324 9Mhz 480*272 // 24h800000 7084 33Mhz 800*480 // 24h008080 7016 50Mhz 1024*600 // 24h000080 4384 33Mhz 800*480 // 24h800080 1018 70Mhz 1280*800 */ module rd_id(i…