JavaScript笔记:运算符
运算符:等同于数学中的运算一样处理
表达式:一定都会有值
//赋值表达式
var a = 10;
//算术表达式
a + 10;
console.log(a);
1、算术运算符:+ - * / % ++ –
(1)i++与++i的区别:
i++
先用再加
++i
先加再用
(2)优先级问题:
先算 *
/
%
,再算 +
-
可以使用括号()
改变运算顺序
(3)解决误差
使用函数 toFixed(n)
其中n表示保留的小数位数
var a = 2 - 1.6;
console.log(a);//结果为:0.399999999999999
a = a.toFixed(2);
console.log(a);//结果为:0.40
(4)键盘输入值
基本语法:prompt("提示","默认值(可省略)");
var a = prompt("请输入:"); //假设输入2
console.log(a);//结果为2
2、关系运算符:> < >= <= != === !==
最终的结果为boolean类型的值
==
/!=
仅判断数据值
===
/!==
判断数据的值和数据的类型
(1)string与number比较时
string会先转换为number,使用了Number()
函数
任何数据与NaN
比较,结果都会是false
(2)string与string比较时
二者使用Unicode码进行比较
查看unicode码方法:'a'.charCodeAt()
空字符可以当做false
使用,如""
,0
,0.0
,undefined
3、逻辑运算符:多个条件之间的判断关系
(1)与:&&
两个条件都为true
,则结果为true
短路逻辑:只要第一个条件为false
,结果就会为false
,后面的语句不进行操作。即“见0则0”
(2)或:||
两个条件有一个条件为true
,则结果为true
短路逻辑:只要第一个条件为true
,结果就会为true
,后面的语句不进行操作。即“见1则1”
(3)非:!
取反
4、位运算符
只能做数字的运算,而且要将数字转为二进制
(1)&:按位 与
对应某一位上的操作数都是1时,该为结果为1,否则为0
应用场景:判断奇偶性(比取余效率高)
//和1做按位与运算,最后一位为1,则是奇数,否则为偶数
console.log((10 & 1 !== 0));//结果为false
(2)|:按位 或
对应某一位上的操作数有一个是1时,该为结果为1,否则为0
应用场景:向下取整
var a = 48.89;
console.log(a | 0); //结果为:48
(3)<<:按位左移
将二进制数,向左移动几位,右边补0
//将1的二进制数左移2位
console.log(1 << 2);
//左移前:0000 0001
//左移后:0000 0100
// 结果为:4
(4)>>:按位右移
将二进制数,向右移动几位,左边补0
//将8的二进制数右移2位
console.log(8 >> 2);
//左移前:0000 1000
//左移后:0000 0010
// 结果为:2
(5)^:异或
对应某一位上的操作数只一个是1时,该为结果为1,否则为0
应用场景:交换两个变量的值
var a = 5,
b = 3;
a = a ^ b;//a = 6
b = b ^ a;//b = 5
a = a ^ b;//a = 3
5、赋值运算符:= += -= *= /= %= &= |= ^=
+=:a += b;
===> a = a + b;
-=:a -= b;
===> a = a - b;
……
6、三目运算符:
基本语法:表达式1 ? 表达式2 : 表达式3
其中表达式1的结果为boolean
类型,如果表达式1结果为true,则执行表达式2
如果表达式1结果为false,则执行表达式3
var score = 78;
var result = score >= 60 ? "及格" : "不及格";
console.log(result); //结果为:及格