js运算符和逻辑分支

一、一元运算符

只能操作一个值的运算符叫做一元运算符

var a = ++b; //加后取值先执行加法运算, 再取值
var a = b++; //加前取值先取值, 再执行加法运算

其他类型应用一元运算符的规则

var b = '89'; 
b++; //90,数值字符自动转换成数值
var b= 'ab'; 
b++; //NaN,字符串包含非数值转成NaN
var b = false;
b++;//1,false转成数值0,累加就是1
var b = 2.3; 
b++; //3.3,直接加1
Number(true)  1
Number(false)  0

二、关系运算符

在这里插入图片描述

1、用于进行比较的运算符称作为关系运算符.

  1. 数字和数字比较,直接比较大小;
  2. 数字和字符串比较,字符串转换为数字后再比较;
  3. 字符串和字符串比较,进行字符的ASCII码值比较。

字符与ASCII值互转

var str = "A";
str.charCodeAt(); 	// 65
var num = 97;
String.fromCharCode(num);  // 'a'

比较注意事项:

  1. 布尔值 ture=1, false=0
  2. 只要不等于NaN, 就是true,其他有NaN的运算都为false
  3. 如果要恒等, 则必须值和类型都要相等;

2、关系运算符(特殊值)

null == undefinedtrue
‘NaN’ == NaNfalse
5 == NaNfalse
NaN == NaNfalse
false == 0true
true == 1true
true == 2false
undefined == 0false
null == 0false
‘100’ == 100true
‘100’ === 100false

三、逻辑运算符

逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。

逻辑与&&运算符属于短路操作,顾名思义,如果第一个操作数返回是false,第二个数不管是true还是false都会返回false。

逻辑或||运算符也是短路操作。当第一操作数的求值结果为true, 就不会对第二个操作数求值了。
在这里插入图片描述
短路效果

var a = 1;
console.log(a++ || true)
--->1
console.log(a)
--->2
console.log(true || a++)
--->true

四、逻辑非(NOT): !

逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。它的流程是:先将这个值转换成布尔值,然后取反,规则如下:

  • 操作数是一个空字符串,返回true; 非空字符串, 返回false
  • 操作数是数值0,返回true; 任意非0数值(包括 Infinity),返回false
  • 操作数是NaN, 返回true
  • 操作数是undefined, 返回true

五、赋值运算符

赋值运算符用等于号(=)表示,就是把右边的值赋给左边的变量。
赋值运算符通过x=的形式表示,x表示算术运算符。
如:=、+=, -=, *=, /=, %=等
在这里插入图片描述

六、算数运算符和其他运算符:

算数运算符:+,-,*, /, %(取余数)

三目运算符: ?:

字符串运算符: 字符串运算符只有一个,即:“+”。它的作用是将两个字符串相加。规则:至少一个操作数是字符串

七、程序的三大流程控制

共有三种基本结构:

顺序:从上朝下执行的代码就是顺序

分支(选择):根据不同的情况,执行对应代码

循环:重复做一件事情

(1) 顺序结构
顺序结构是最简单的程序结构,它是由若干个依次执行的处理步骤组成的。

(2) 分支结构
在处理实际问题时,只有顺序结构是不够的,经常会遇到一些条件的判断,流程根据条件是否成立有不同的流向。

(3) 循环结构

需要重复执行同一操作的结构称为循环结构,即从某处开始,按照一定条件反复执行某一处理步骤,反复执行的处理步骤称为循环体

1.IF单分支

if条件判断语句的写法:

if(表达式){
  执行语句
}

当括号内的表达式结果成立(为true时),则执行大括号内的语句,否则不执行。
注意:

  1. if后面的()不能省略;
  2. 一条执行语句可以省略{}, 多条时不能省略{}, 建议不管是一条还是多条都写上{}

2.IF双分支

if(表达式){
  执行语句1
}
else{
  执行语句2
}

当if括号内的表达式结果成立,执行执行语句1,否则执行执行语句2;

3.IF多分支语句

if(表达式){
	执行语句1
 } 
 else if(表达式2){
	执行语句2
 }
 else if(表达式3){
	执行语句3
 }
 else{
	执行语句n
 }

从上往下,满足哪个条件就执行其相对应的语句,都不满足时,执行最后的else的语句,只能进入其中之一。

4.IF的嵌套

将整个if语句块插入另一个if语句块中

if (表达式1) {
     if (表达式2)  {
       if (表达式3){
             语句;
       }
 	  else{
	       语句;
     }
}
  else{
        语句;
  }
}

注意:嵌套if时,最好不要超过三层; 内层的每一对if…else代码要缩进且对齐;编写代码时,else要与最近的if配对。

5、switch语句的写法:

switch(表达式) {
     case 常量1:语句; break;
     case 常量2:语句; break;
     case 常量n:语句; break;
     default:语句; break;
}

表达式的结果等于哪个case的常量,则执行其后的语句,执行完break就跳出switch结构,都不满足则执行default的语句。

break的作用:是跳出switch结构,如果没有break,则继续执行下面分支的的语句(而不进行判断)。

注意case穿透,要加break

switch的应用场景:表达式为固定值,不能判断范围

八、循环的分类

(1).while循环
(2).do-while循环
(3).for循环

  • for in
  • forEach

1、while循环语法格式

while(表达式)
{
    执行代码;
}

注意:
1.while循环必须按照上述语法格式来写, 只能更改表达式内容和执行代码;
2.表达式可以是常量,变量或者其他表达式,该表达式会被强制转换为boolean类型, 可以理解表达式就是循环的条件;
3.执行代码可以有多行, {}所包含的称为循环体;;
4.表达式不要一直是true, 避免死循环;
5.while循环的顺序是: 先判断表达式是否为true, 若true则执行执行代码, 然后再继续判断表达式是否为true, …. 直到判断表达式为false才会跳出循环, 执行while后面的代码。

while循环一般会有: 循环初始值, 循环条件 和 循环变量增量(或者减量)

2、for循环语法格式

主体结构

for (表达式1; 表达式2;表达式3){
       执行代码;
}

示例

for(var i=0;i<5;i++){
  console.log(i)
}
for循环将 循环初始值, 循环条件, 循环变量增量写在了一起
注意: 三个表达式都是可选填写, 但是如果后两个不写,会造成死循环; 而第一个为初始化值,所以我们三个一般都要写上.

3、for in 返回索引值

for(var i in Array){
  console.log(i)
}

4、forEach 返回值

Array.forEach(function(arg){
  console.log(arg)
});

5、break关键字

  1. 在switch语句中使流程跳出switch结构;
  2. 在循环语句中使流程跳出当前循环。

注意:

  • 如果已执行break语句,就不会执行循环体中位于break后的语句。
  • 在多层循环中,一个break语句只向外跳一层。

6、continue关键字

只能在循环语句中使用,使本次循环结束,即跳过循环体中下面尚未执行的语句,接着进行下次是否执行循环的判断。

注意:

  • continue语句只能用在循环里。
  • 对于while和do-while循环,continue语句执行之后的动作是条件判断;对于for循环,随后的动作是变量更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值