JS中的运算符和JS中的分支结构

时间:2023-12-15 14:23:20

JS中的运算符

1、算术运算(单目运算符)
+ 、-、*、 /、 %取余、++自增 、--自减
+:两种作用,链接字符串/加法运算。当+两边全为数字时,进行加法运算;当+两边有任意一边为字符串时,起链接字符串作用,
链接之后的结果为字符串.
除+外,其余符号运算时,会先尝试将左右变量用Number函数转为数字;

/:结果会保留小数点。

++:自增运算符,将变量在原有基础上+1;
--:自增运算符,将变量在原有基础上-1;
【a++和++a的异同】
①相同点:无论a++还是++a,运算完以后,a的值均会+1;
②不同点:a++先用a的值去运算,再把a+1;
++a先把a的值+1,在用a+1以后的值去运算;
eg: var a=3,b,c;
b = a++ +2;//先用 a运算,b=3+2,再把a+1=4;
c = ++a +2;//先把a+1,a=5,再用a+1以后的值运算。

2、赋值运算
=赋值 += -= *= /= %=
+=: a +=b;相当于a=a+b;但是前者的运算效率要比后者快,所以推荐使用+=;

3、关系运算
==等于、=== 全等、 !=不等、!==不全等、>、<、>=、<=
①关系运算符,运算之后的结果,只能是Boolean类型;
②判断一个数字是否处于某个区间比须用&&链接;
alert(a<10 && a>0);√ 10>a>0 ×
===:严格等于,要求不但类型相同,值也必须相同;类型不同,结果直接为false;类型相同,在进行下一步判断;
==:等于。类型相同,与===效果一样。类型不同时会先尝试将两边转为数字Number再进行判断;
但是有个别特例 ,如:Null==flase × Null==Undefined √

4、条件运算符(多目运算)
a>b?true:false
有两个重要符号 ?和 :
当?前面部分运算结果为true时执行:前面的代码
当?前面部分运算结果为false时,执行:后面的代码
冒号两边可以为数值则整个式子可用于赋值 var a=1<2?1:2;
冒号两边可以为代码块可以直接执行代码;1<2?alert{1}:alert(2)
多目运算符可以多层嵌套。var a =1<2?alert(1):(1>0?4:5);

5、位运算符、 逻辑运算符
&&与、||或、!非
&&两边都成立结果为true
||两边有任意一边成立,结果为true

6、运算符的优先级
() 小括号最高
! ++ -- 单目运算符
* / %
+ -
> < > = <=
== !=
&& //与或同时存在时,&&比||高
||
= += -= *= /= //最低是各种赋值

JS中的分支结构

[if-else结构]
1.结构的写法:
if(判断条件){
条件为true时,执行if的{}
}else{
条件为false时,执行else的{}
}


2、注意事项:
①else{}语句块,可以根据情况进行省略。
②if和else后面的{}可以省略,但是省略{}后,if和else只能跟一条语句,所以并不建议省略{}。


3、 if的()中的判断条件,支持的情况:
①Boolean :true为真,false为假;
②String : 空字符串为假,所有非空字符串为真;
③Number : 0为假,一切非0数字为真;
④null/undefined/NaN :全为假;
⑤Object :全为真;

【多重if.阶梯if结构】
1.结构写法:
if(条件一){
条件一成立,执行的操作
}else if(条件二){
条件一不成立&&条件二成立,执行的操作。
}else{
上面所有条件都不成立时,执行的操作。
}

2、多重if结构中,各个判断条件是互斥的,执行选择其中一条路执行。遇到正确选项并执行完以后,直接跳出结构,不再判断后续分支;

【嵌套if结构】
1、结构写法:
if(条件一){
条件一成立
If(){
条件一成立&&条件二成立
}else{
条件一成立并且条件二不成立。
}


}else{
条件一不成立
}
2、在嵌套if 中,如果省略{}则else永远属于离他最近的if结构;

3、嵌套结构可以多层嵌套,但是一般不推荐超过3层;
能用多重if结构的一般不推荐使用嵌套if;

做简单计算器的方法:

<script>
var a =parseFloat(prompt("请输入第一个整数:"));
var b =prompt("请输入符号:");
var c =parseFloat(prompt("请输入第二个整数:"));

var result = 0 ;
result = b=="+"?a+c:result;
result = b=="-"?a-c:result;
result = b=="*"?a*c:result;
result = b=="/"?a/c:result;
alert("结果为:"+result);
</script>

<script>
var num1 =parseFloat(prompt("请输入第一个整数:"));
var fu =prompt("请输入操作字符");
var num2 =parseFloat(prompt("请输入第二个整数:"));

if(fu=="+"){
alert(num1+num2);
}else{
if(fu=="-"){
alert(num1-num2);
}else{
if(fu=="*"){
alert(num1*num2);
}else{
alert(num1/num2);
}
}
}
</script>