运算符分为:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符。
1.算术运算符
算术运算符等同于数学中的运算一样理解。
一般算术运算符有:+ - * / % ++ --。其中 ++/–作为前缀:先自增/自减再使用;作为后缀:先使用再自增/自减。
例如:
var num = 5;
num++;// num = num + 1
console.log(num);//6
console.log(num++);//6
console.log(num);//7
console.log(++num);//8
var r = num++ + ++num + num++;
console.log(r);//28
console.log(num);//11
算术运算符的优先级:先* / %再+ -,可以用()提升优先级。
四舍五入解决误差 .toFixed(n),n表示保留n位小数。
var num = 2 - 1.6;
num = num.toFixed(2);
console.log(num);
用% 判断奇偶性:请用户输入一个数 ,判断是奇数还是偶数。
var inputNum = prompt("请输入一个数:");
console.log("奇数?" + (inputNum%2));
2.关系运算符
关系运算符有: > < >= <= == != === !== 其最后的结果一定是boolean类型。
== 判断两个数据是否相等;
!= 不等于, 判断两个数据是否不相等;
=== 判断数值和类型是否完全相等;
!== 判断数值和类型是否完全不相等;
string 和 number 判断大小时, 将字符串隐式转换为number类型 用Number()函数
var str=10;
console.log(str>5);//true
任何一个数据与NaN进行比较时,结果一定都是false。
string和string之间判断大小 根据每个字符的unicode码作比较。
console.log('a'>'b');//false
console.log('张三丰'>"张无忌");
console.log('三:'+ '三'.charCodeAt());
console.log('无:'+ '无'.charCodeAt());
3.逻辑运算符
作用:多个条件之间的判断关系。
逻辑与:&& 多个条件都必须同时满足才为true, 见false则false;
短路与:只要第一个条件 为假的话,整个表达式的结果都为假,并且不会去判断第二个条件;
逻辑或:|| 满足其中一个条件就取true,见true则true;
短路或:只要第一个条件为真的话,整个表达式结果就为真,并且不会去判断第二个条件时;
取反:!。
例:判断输入的数据是否为数字
var input = prompt("请输入:");
console.log('是不是一个数:'+ !isNaN(input) );
例:笔试成绩60,面试成绩60,才可录取
var bi = prompt("输入笔试成绩:");
var face = prompt("输入面试成绩:");
var isPass = (bi >= 60) && (++face >=60) ;
console.log('是否能入职?'+isPass);
例: 笔试成绩和面试成绩有一个是100分就可以入职
var bi = prompt("输入笔试成绩:");
var face = prompt("输入面试成绩:");
var isPass1 = bi==100 || ++face ==100;
console.log('是否能入职?'+isPass1);
console.log(bi,face);
4.位运算符
位运算符:只能做数字的运算,且要将数字转换为二进制,然后在做运算。
按位与:&,将两边的操作数转换成为二进制,每位的数字,只要对应都是1的时候,该位的结果才为1,否则该位结果为0。
var num1 = 5;//二进制101
var num2 = 3;//二进制011
var r = num1 & num2 ;
console.log(r);//001
作用:判断奇偶性,比模的效率要高
判断数字与 1 做按位与 ,最后的一位 1 为奇数 0为偶数
例:
console.log( (10 & 1) === 0 );//true偶数
console.log( (9 & 1) === 0 );//false奇数
按位或:|,将两边的操作数转换成为二进制,比较每位上的数字,两个数字中有一个是1,则该位的结果就是1 ,否则为0。
var num1 = 5;//二进制101
var num2 = 3;//二进制011
var r = num1 | num2 ;
console.log(r);//111
作用:向下取整,位运算一定会将数据转换为二进制,而小数会被转换为整数。
var num3 = 6.5;二进制110
console.log(num3 | 0);110 6
按位左移:<<,将二进制数,向左移动几位 ,右面以0 补位
console.log(2 << 1);// 4
console.log(2 << 2);// 8
console.log(2 << 3);// 16
console.log(2 << 4);// 32
按位右移:>>,将二进制数,向右移动几位 ,左面以0 补位
console.log(8 >> 1);//4
console.log(8 >> 2);//2
console.log(8 >> 3);//1
console.log(8 >> 4);//0
异或:^,将两边的数字转换为二进制 进行比较,每位上的数字,只有一个为1时,该位结果才为1,否则为为0
var num1 = 5;//二进制101
var num2 = 3;//二进制011
r = num1 ^ num2
console.log(r);
// 交换num1 和num2的值
num1 ^= num2;// num1 = num1 ^ num2;
num2 ^= num1;// num2 = num2 ^ num1;
num1 ^= num2;// num1 = num1 ^ num2;
console.log(num1,num2);// 3 5
5.赋值运算符
赋值运算符表达式:+= -= *= /= %= &= |= ^=;
语法:a+=b 和 a = a + b 有相同的效果;
条件运算符 ,三目运算;
单目运算符:++ – !;
双目运算符:+ - / % && || ^ & | > <;
三目运算符:需要三个操作数/表达式, 表达式1 ? 表达式2 : 表达式3;允许嵌套。
表达式1:运算结果应该为boolean类型;
表达式1 = true,则执行表达式2;
表达式1 = false,则 执行表达式3;
例:判断成绩,如果成绩>=80则为优秀;>=60则为合格;<60 为不及格。
var score = prompt("输入成绩:");
var msg = score >= 80 ? "优秀" : score >= 60 ? "合格":"不及格";
console.log(msg);