您的位置:首页 > 其它

运算符和表达式

2016-03-02 23:20 190 查看
2. ****运算符和表达式

程序: 人的*想法*在计算机中的执行

运算符: 程序中模拟人的想法的符号

表达式: 由数据,变量和运算符组成的一个公式

每个表达式都完成一项专门的运算任务

***每个表达式几乎都有返回值

1. 算数运算: + - * / %

隐式转换: 默认都转为数字,再运算

如果无法转为数字,则转为NaN

如果NaN参数任何算数计算,结果仍然为NaN

特殊: +运算中,只要碰上字符串,就都转为字符串。+运算变为字符串拼接。

%: m%n 表示m/n,不取商,而取除不尽的余数部分

何时使用: 1. 判断能否被整除

2. 控制一个运算的结果,不能超过指定值

因为模运算的结果,不可能超过除数

2. 关系运算: 做比较

包括: > < >= <= == !=

只返回true、false

隐式转换: 默认一切都转为数字,再比较大小

特殊: 1. 如果参与比较的两值都是字符串

会按位PK每个字符的unicode号

直到比出结果为止

2. NaN不大于,不小于,不等于任何值

NaN和任何值做> < ==比较都返回false

NaN和任何值做!=比较返回true

结果: 无法用普通的关系运算,判断一个数据是否是NaN

解决: var bool=isNaN(num)

本意用来检测num是不是NaN

如果num是NaN就返回true,否则返回false

经常反用: 用来检测num是不是数字或能否被隐式转为数字。

比如: var bool=!isNaN(num)

用来检测num是不是数字

如果num是数字,就返回true

否则返回false。

3. null和undefined: null==undefined -> true

如何解决:

全等: === 类型相同且数值相同

其实就是不带隐式转换的==

function String(x){

//如果x是null,就返回"null"

if(x===null){ return "null"; }

//否则,如果x是undefined,就返回"undefined"

else if(x===undefined){return "undefined"}

//否则

else{ return x.toString(); }

}

3.逻辑运算: 将多个关系运算综合得出最终结论

返回值: 逻辑运算作为条件使用时,都返回true,false

包括: &&(而且) ||(或) !(不)

其中: &&: 只有两个条件都为true,结果才为true

只要一个条件为false,结果就为false

||: 只要一个条件为true,结果就为true

只有两个条件都为false,结果才为false

!: 颠倒任意bool值:!true->false !false->true

隐式转换: 默认将每个关系运算都转为bool再综合比较

***短路逻辑: 只要前一个条件已经可以得出最终结论,则后续条件不再执行!

&&: 如果前一个条件为true,时后一个条件才执行

如果前一个条件为false,则后一个条件不执行

固定套路: 实现简单分支:

1个条件,1件事,满足条件才执行,不满足就不执行

公式: 条件&&操作;

比如: //如果total>500,才打八折

if(total>500){total=total*0.8}

也可写成: total>500&&(total=total*0.8);

||: 如果前一个条件为true,则后一个条件不执行

如果前一个条件为false,则判断后一个条件

固定套路: 实现两个值二选一使用——备选值

4.位运算:

左移和右移:

m<<n: 读作m左移n位,相当于:m* 2的n次方

m>>n: 读作m右移n位,相当于: m/ 2的n次方

m>>>0: 取整

5.扩展赋值运算: 一句话执行两个操作: 运算,再保存回去

+= -= *= /= %=

何时使用: 只要取出变量的值做计算,之后还要再保存回去时,就要用扩展赋值运算简写。

比如: total=total*0.8; => total*=0.8;

m+=n; => m=m+n; 累加

m*=n; => m=m*n; 累乘

递增,递减运算: ++ --

i++ => i+=1 => i=i+1

i-- => i-=1 => i=i-1

递增 vs 累加:

如果每次固定增1,才用递增,否则,用累加

****递增/减,单独使用,放前放后都一样

递增/减,参与其他表达式中时: 变量中的值都会被+1

前++,返回递增后的*新*值

后++,返回递增前的*旧*值

鄙视题:

var n=2;

var r=n++ + ++n + n++;

? ? ?

//或 var r=++n + n++ + ++n;

console.log(r);

//?

提示:所有表达式,默认从左向右执行

优先级高的先执行 ++的优先级 高于 +

逻辑运算符的案例:

<script>

var H=180,D=218,B=true;

var H=180,D=2,B=false;

var H=155,D=2,B=false;

console.log("嘉宾1:"+(H>178&&D>1&&B==true));

console.log("嘉宾2:"+(H>178||D>1||B==true));

console.log("嘉宾3:"+(H>155||D>1||B==false));

</script>

短路逻辑的案例:

<script>

/*短路逻辑||*/

var comment=prompt("请输入评论");

console.log(comment||"主人很懒,什么也没留下");

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: