目录
前言:
1. 运算符
1.1 算术运算符
1.2 赋值运算符
1.3 比较运算符
1.4 逻辑运算符
2.流程控制
1.1 分支结构
switch语句
1.2 循环结构
while 循环
for循环
循环控制 :
1.3代码示例
前言:
今天我们就开始学习JavaScript里面的运算符和流程控制,在此之前如果学过C语言的你们理解起来应该是轻而易举的,毕竟编程语言都是具有相通性的,好了,下面就开始学习吧!
1. 运算符
1.1 算术运算符
算术运算符也就是我们常见的加减乘除取模等等,以下表格一一列举出来
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法运算符 | x + y 表示计算 x 加 y 的和 |
- | 减法运算符 | x - y 表示计算 x 减 y 的差 |
* | 乘法运算符 | x * y 表示计算 x 乘 y 的积 |
/ | 除法运算符 | x / y 表示计算 x 除以 y 的商 |
% | 取模(取余)运算符 | x % y 表示计算 x 除以 y 的余数 |
1.2 赋值运算符
运算符 | 描述 | 示例 |
---|---|---|
= | 将运算符右侧的值赋值给运算符左侧的变量 | x = 10 表示将变量 x 赋值为 10 |
+= | 先进行加法运算,再将结果赋值给运算符左侧的变量 | x += y 等同于 x = x + y |
-= | 先进行减法运算,再将结果赋值给运算符左侧的变量 | x -= y 等同于 x = x - y |
*= | 先进行乘法运算,再将结果赋值给运算符左侧的变量 | x *= y 等同于 x = x * y |
/= | 先进行除法运算,再将结果赋值给运算符左侧的变量 | x /= y 等同于 x = x / y |
%= | 先进行取模运算,再将结果赋值给运算符左侧的变量 | x %= y 等同于 x = x % y |
比较特殊的两个赋值运算符`自增1(++)、自减1(--)
自增或自减运算符在单独与变量结合时,放前和放后没有区别(比如++a,a++ 效果是一样的)
如果自增或自减运算符与其他运算符结合使用,要区分前缀和后缀,做前缀,先自加再使用,如果做后缀,先使用再自加
1.3 比较运算符
比较运算符的结算结果,永远都是一个布尔值,条件成立为true
,不成立为false
运算符 | 名称 | 示例 |
---|---|---|
== | 等于 | x == y 表示如果 x 等于 y,则为真 |
=== | 全等 | x === y 表示如果 x 等于 y,并且 x 和 y 的类型也相同,则为真 |
!= | 不相等 | x != y 表示如果 x 不等于 y,则为真 |
!== | 不全等 | x !== y 表示如果 x 不等于 y,或者 x 和 y 的类型不同,则为真 |
< | 小于 | x < y 表示如果 x 小于 y,则为真 |
> | 大于 | x > y 表示如果 x 大于 y,则为真 |
>= | 大于或等于 | x >= y 表示如果 x 大于或等于 y,则为真 |
<= | 小于或等于 | x <= y 表示如果 x 小于或等于 y,则为真 |
字符串与字符串之间的比较,依次比较每位字符的Unicode码,只要某位字符比较出结果,就返回最终结果(阿斯克吗进行比较)
其他情况一律将操作数转换为number进行数值比较,如果某一操作数无法转换number,则变成NaN参与比较运算,结果永远是false
相等与全等
相等 : 不考虑数据类型,只做值的比较(包含自动类型转换)
全等 : 要求数据类型一致并且值相等才判断全等
1.4 逻辑运算符
运算符 | 名称 | 示例 |
---|---|---|
&& | 逻辑与 | x && y 表示如果 x 和 y 都为真,则为真 |
|| | 逻辑或 | x || y 表示如果 x 或 y 有一个为真,则为真 |
! | 逻辑非 | !x 表示如果 x 不为真,则为真 |
逻辑运算符在运算时,会在计算时,临时将运算数转换为布尔值。
与运算时,a被转为布尔值
true
,根据与运算符的特性,true
通过了,所以取到右边的值。c就等于右边的值2JS中所有的值只有如下6个值可以转为
false
,除了这6个值,其他的都是转为true
数字:
NaN
空指针:
null
未定义:
undefined
数字:
0
布尔值:
false
空字符串:
""
逻辑运算符的执行
&& :如果执行与运算时,如果左边的表达式成立就执行右边的表达式,如果左边的表达式不处理就返回false (真真为真,真假为假)
|| :如果执行或运算时,如果左边的表达式成立就直接返回左边的表达式结果,不执行右边的表达式;如果左边的表达式不成立就执行右边的表达式,当两边的表达式都不成立的话就返回false (真假为真,假假为假)
let a=false;
let b='www';
let c=1;
console.log(a&&b); //结果为false
console.log(c&&b); //结果为www
let x=0;
let y='hello';
console.log(x||y); //结果为hello
2.流程控制
流程控制:控制我们代码执行顺序,而程序的执行顺序分为三种结构:顺序结构、分支结构、循环结构
顺序结构就是让程序按照从头到尾的顺序依次执行每一条代码,不重复执行任何代码,也不跳过任何代码。
选择结构也称分支结构,就是让程序“拐弯”,有选择性的执行代码
循环结构就是让程序“杀个回马枪”,重复执行同一段代码。
JavaScript里面的流程控制跟C语言基本上是一模一样的语法的,如果你会C语言的话,下面的内容基本上都可以说是完全掌握了。
1.1 分支结构
分支结构:根据条件选择执行代码,这种就叫分支结构
分支语句包含:If分支语句、switch 语句
if语句有三种使用:单分支、双分支、多分支
// 单分支: 当条件表达式成立,即结果为布尔值 true 时,就会执行{ }中的代码。
if(条件){
// 条件成立时执行
}
// 双分支:单分支的升级版,它不仅可以指定当表达式成立时要执行的代码,还可以指定当表达式不成立时要执行的代码
if(条件){
// 条件成立时执行
}else{
// 条件不成立时选择执行
}
// 多分支:允许您定义多个条件表达式,并根据表达式的结果执行相应的代码
if(条件1){
//条件1成立时执行
}else if(条件2){
//条件2成立时执行
}else if(条件3){
//条件3成立时执行
}...else{
//条件不成立时执行
}
switch语句
switch语句用于值的匹配,case用于列出所有可能的值;只有switch()表达式的值与case的值匹配全等时,才会执行case对应的代码段
break用于结束匹配,不再向后执行;可以省略,break一旦省略,会从当前匹配到的case开始,向后执行所有的代码语句,直至结束或碰到break跳出
default用来表示所有case都匹配失败的情况,一般写在末尾,做默认操作
switch(value){
case 值1 :
// value与值1匹配全等时,执行的代码段
break; // 结束匹配
case 值2 :
// value与值2匹配全等时,执行的代码段
break;
case 值3 :
// value与值3匹配全等时,执行的代码段
break;
default:
// 所有case匹配失败后默认执行的语句
break;
}
1.2 循环结构
作用:根据条件,重复执行某段代码
while 循环
//定义循环变量;
while(循环条件){
// 条件满足时执行的代码段
// 更新循环变量;
}
for循环
for(定义循环变量;循环条件;更新循环变量){
//循环体;
}
循环控制 :
break 强制结束循环
continue 结束当次循环,开始下一次循环
1.3代码示例
给定一个数组[9,5,1,4,3,7,6,11,2,20] 通过冒泡排序法进行排序(JavaScript实现)
let a=[9,5,1,4,3,7,6,11,2,20] ;
for(let i=0;i<a.length;i++){
for(let j=0;j<a.length-1;j++){
if(a[j]>a[j+1]){
let b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
}
}
console.log(a)
//输出结果: [1, 2, 3, 4, 5, 6, 7, 9, 11, 20]
以上就是今天的全部内容了,我们下一期再见!
分享一张壁纸: