JavaScript的运算符与分支循环

一、运算符

1.算数运算符

+ - * / % ++ --
% :取余
++ :自增,在原有基础上加1
-- :自减,在原有基础上减1
++-- 放前放后的计算区别:
var a = 1;
var b = a ++;// 先把a的值赋给b,a再自加,所以b = 1,a = 2
var c = ++a;//a先自加,再把最新的值传给c,所以a = 3,c = 3
console.log(a,b,c);// 3,1,3

++ 在后,先赋值,再自加
++ 在后,先自加,再赋值
--同理

来个题检验一下啊

var num = 1; 
var result = num-- + --num + ++num + num++ + num++;
console.log(result);
//答案解析见文章末尾

2.比较运算符

> <  >= <=  ==(等于)  !=(不等于) ===(全等于) !==(不全等于)

== 只比较数值是否相同,可能会自动进行数值转换
=== 比较数值,还比较数据类型

推荐使用 ===!==

几个不知道哪里会用到的例子

表达式结果分析
2 > ‘10’false字符串 ‘10’ 自动转化成数值 10
‘2’ > ‘10’true字符串之间的比较 ,比较的是首个字符的Unicode码,2是50,1是49
2>‘10a’,2<‘10a’,2 ==‘10a’false'10a’自动转成数值是NaN,NaN和任何值比较都是false

3.逻辑运算符

&& 与,两者都为true,结果才为true,否则为false
|| 或,有一个为true,结果就为true,两者都为false结果才为false
!  非,取反

短路逻辑

&& 当第一个条件为false,就不执行第二个条件
|| 当第一个条件为true,就不执行第二个条件
不用管最终结果是true还是false,只关心第二个条件有没有执行
PS:&&优先级高于||

看个题

var a = 5;
a > 1 && console.log(x); 
a < 4 || console.log(x);
结果会打印什么?
解析在文章末尾

再来一个

var n = 1 && 2; // n = 2 
var m = 0 || 5; // m = 5
看第二个条件执不执行

4.位运算符

& 按位与 有0就为0
| 按位或 有1就为1
模拟计算机底层运算过程,简单的说就是这么一个过程:
数据 ==> 二进制 === >计算结果 ===>十进制

看个无脑例子

2    &  6
010  & 110  先转二进制
	010   上下对齐,不齐补0,上下做&运算
	110    
	010   
	 2    转为十进制  
所以 2 & 6 = 2

5.赋值运算符

=(赋值) += -= *= /= %=
运算顺序:先执行运算,再赋值

var str = "hello";
str +=" world!"; //str = str + " world!"
console.log(str); //hello world!

6.三目运算符

一目++ == 一个运算符,一个操作数据/表达式
二目+ - * / % > < 一个运算符,两个操作数据/表达式
三目条件表达式 ?表达式1:表达式2 ,两个运算符,三个数据/表达式
表达式:由数据或者由运算符连接的数据所组成的形式

条件表达式?表达式1:表达式2
true 执行表达式1
false 执行表达式2
例子:
1?2:0  // 2
0?1:2 // 2
var a = 5;
a >1? a--:a=1  // 5, a = 4
a >1? a--:a=1  // 4, a = 3
...
a >1? a--:a=1  // 1, a = 1

二、条件判断

1.if

if(条件表达式){
语句块
}

如果{ 这里只有一行语句的话 } ,{}可以不写

2.if-else

if(条件表达式1){
语句块1
}else if(条件表达式n){
语句块n
}else{
语句块n+1 //所有的条件都不满足时执行
}

3.switch -case

switch(表达式){ // 一般情况下是一个 变量
case 值1: //表达式 === 值1,执行语句块1
语句块1
break; //结束switch-case , 不再往后执行
case 值n:
语句块n
break;

default: //达式和以上每个值都不等,执行语句块 n+1
语句块n+1
}

**不加break的话会执行下一个case**

三、分支循环

两大要素循环条件循环体

循环条件控制循环的次数
循环体控制每次循环时执行的代码

1.while循环

while(循环条件){
循环体
}
符合条件就进入循环

死循环:
while(true){.....}

2.do-while 循环

do{
循环体
}while(循环条件);
先进行一次循环,再判断条件

3.for 循环

for(初始值;循环条件;增量){
循环体
}

不写条件默认死循环
for(;;){.....}

打印一个九九乘法表

for(i=1;i<=9;i++){ //嵌套循环  (外层循环类似控制行数)
	for(j=1,str='';j<=i;j++){  // 常用空字符去拼接字符串(内层循环类似控制列数)
	  str+=j+'*'+i+'='+(i*j)+' ';
	};
	 console.log(str);
}

4.break

结束循环,不在执行循环内的语句

结束死循环:
while(true){ 
   	console.log(111);
	break;
}
for(;;){
	console.log(111);
	break;
}

5.continue

跳过这一次循环,不执行本次循环里剩余语句,执行下一次循环


两道题的解析

算数运算符题目解答
var num = 1; 
var result = num-- + --num + ++num + num++ + num++;
console.log(result);
a = num-- , a = num = 1, num = num - 1 = 0
b = --num , b = num - 1 = -1 , num = -1
c = ++num , c = num + 1 = 0, num = 0
d = num++ , d = num = 0, num = num + 1 = 1
e = num++ , e = num = 1, num = num + 1 = 2
所以
result = a + b + c + d + e
       = 1 - 1 + 0 + 0 + 1
       = 1
num = 2

短路逻辑
var a = 5;
a > 1 && console.log(x); 
a < 4 || console.log(x);

a > 1 //true
&&的第一个条件为true,所以会执行第二个条件
console.log(x)
由于x未定义,所以会报错:x is not defined

a < 4 //false
||第一个条件为false,所以会执行第二个条件
同理也会报错

换一下条件
a > 1 || console.log(x); 
||第一个条件为true 不执行第二个条件,不会报错
a < 4 && console.log(x);
&&第一个条件为false,不执行第二个条件,不报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值