一、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,a=4
c = ++a +2;//先把a+1,a=5 再用a+1以后的值去运算,c=5+2
2、赋值运算
= 赋值、 += -= *= /= %=
+=:a+=b;相当于a=a+b;但是,前者的运算效率要比后者快,所以推荐使用+=写法
3、关系运算
== 等于、===严格等于(全等)、!= 不等、!== 不全等、>、<、>=、<=
>>> 关系运算符,运算之后的结果,只能是Boolean类型;
>>> 判断一个数字是否处于某个期间,必须用&&链接;
10>a && a>0 √ 10>a>0 ×
>>> ===:严格等于;要求不但要类型相同,值也必须相同;类型不同,结果直接为false;类型相同,再进行下一步判断
==:等于。类型相同,与===效果一样;类型不同时,会先尝试用Number函数将两边转为数字再进行判断
但是,有个别特例,如:Null==false × Null==Undefined √
NaN==NaN ×
4、条件运算符(多目运算)
a>b?true:false
有两个重要符号:?和:
当?前面部分,运行结果为true时,执行:前面的代码;
当?前面部分,运行结果为false时,执行:后面的代码;
冒号两边可以为数值,则整个式子可用于赋值。var a=1>2?1:2;
冒号两边可以为代码块,将直接执行代码。var a=1>2?alert(1):alert(2);
多目运算符可以多层嵌套。 var a=1>2?alert(1):(1<2?4:5);
5、位运算符、 逻辑运算符
&、|、~ && 与、|| 或、! 非
&& 两边都成立,结果为true;
|| 两边有任意一边成立,结果为true
6、运算符的优先级
() 小括号最高
! ++ -- 单目运算符
* / %
+ -
> < >= <=
== !=
&& 与或同时存在时,&&比||高
||
= += -= *= /= 最低的是各种赋值
eg:水仙花数
二、JS中的分支结构
<script type="text/javascript"> var num=prompt("请输入一个三位正整数:"); var a,b,c; a=parseInt(num/100); b=parseInt(num/10)%10; c=num%10; var sum=a*a*a+b*b*b+c*c*c; var result=sum == num?"是水仙花数":"不是水仙花数" alert("您输入的:"+result); </script>
【if-else结构】
1、结构的写法:
2、注意事项:
if(判断条件){ //条件为true时,执行if的{} }else{ //条件为false时,执行else的{} }
① else{}语句块,可以根据情况进行省略
② if和else后面的{}可以省略,但是省略{}后,if和else后面只能跟一条语句。
(所以,并不建议省略{})
3、if的()中的判断条件支持的情况:
① Boolean:true为真,false为假;
② String: 空字符串为假,所有非空字符串为真;
③ Number: 0为假,一切非0数字为真;
④ Null/Undefined/NaN: 全为假;
⑤ Object: 全为真
【多重if、阶梯if结构】
1、结构写法:
2、多重if结构中,各个判断条件是互斥的,执行选择其中一条路执行。遇到正确选项,并执行完以后,直接跳出结构,不再判断后续分支
if(条件一){ //条件一成立,执行的操作 }else if(条件二){ //条件一不成立&&条件二成立,执行的操作 }else{ //上述所有条件都不成立时,执行的操作 }
【嵌套if结构】
1、结构写法:
2、在嵌套if结构中,如果省略{ },则else结构永远属于离它最近的一个if结构。
if(条件一){ // 条件一成立 if(条件二){ // 条件一成立&&条件二成立 }else{ // 条件一成立&&条件二不成立 } }else{ // 条件一不成立 }
3、嵌套结构可以多层嵌套,但是一般不推荐超过3层;能用多重if结构的一般不推荐使用
嵌套if。
【switch-case】
1、结构写法:
var num=5; switch (num-3){ case 1: document.write("第一个case"); break; case 2: document.write("第二个case"); break; case 3: document.write("第三个case"); break; default: document.write("case都不成立,执行default"); break; }
① switch结构()中的表达式,可以是各种js支持的数据类型;
② switch结构在进行判断的时候,使用===判断;
③ case后面的表达式可以是各种数据类型,但是值要求各不相同,否则也只会执行第一
个case。
④ break作用:执行完case代码后,跳出当前switch结构;
缺少break后果:从第一个正确的case项开始,执行后面的所有case和default;
⑤ switch结构在进行判断的时候,只会判断一次正确答案,当遇到正确的case后,将不
会再判断后续的项目。
⑥ switch结构的执行效率要比多重if快。在多路分支结构中,推荐优先使用switch。