运算符
一。算数运算符
1.算数运算符;
- 运算中一个或二个是字符串,js会自动转换为数字,来计算,最后结果是为NaN
任何一个和NaN计算后都是结果都是NaN
布尔值false和true都会转换为0和1来计算
var num = 100;
var str1 = '爱新觉罗';
var str2 = '200';
var boo = true;
var result1 = num + 300;
console.log(result1);// 400
var result2 = str1 + 300;
console.log(result2);
console.log(typeof result2);// string
var result3 = str2 + 300;
console.log(result3);// 200300
// 如布尔类型进行加法计算;将布尔类型转换为数字值,再进行加法计算
var result4 = boo + 300;
console.log(result4);// 301
// 减法;先将其他类型转换为number类型,再进行计算
var result5 = num - 100;
console.log(result5);// 0
// 如字符串进行减法计算;则字符串类型转换为数字值,再进行减法
var result6 = str1 - 100;
console.log(result6);// NaN
var result7 = str2 - 100;
console.log(result7);// 100
// 如果布尔类型进行减法计算;则布尔类型转换为数字值,再进行减法
var result8 = boo - 100;
console.log(result8);// -99
// 除法;一旦零是被除数;则无穷大
2.加法运算符;
- 如布尔类型进行加法计算;将布尔类型转换为数字值,再进行加法计算
var num = 100;
var str1 = '爱新觉罗';
var str2 = '200';
var boo = true;
var result1 = num + 300;
console.log(result1);// 400
var result2 = str1 + 300;
console.log(result2);
console.log(typeof result2);// string
var result3 = str2 + 300;
console.log(result3);// 200300
// 如布尔类型进行加法计算;将布尔类型转换为数字值,再进行加法计算
var result4 = boo + 300;
console.log(result4);// 301
3.减法运算符;
- 减法;先将其他类型转换为number类型,再进行计算
var num = 100;
var str1 = '爱新觉罗';
var str2 = '200';
var boo = true;
var result5 = num - 100;
console.log(result5);// 0
// 如字符串进行减法计算;则字符串类型转换为数字值,再进行减法
var result6 = str1 - 100;
console.log(result6);// NaN
var result7 = str2 - 100;
console.log(result7);// 100
// 如果布尔类型进行减法计算;则布尔类型转换为数字值,再进行减法
var result8 = boo - 100;
console.log(result8);// -99
4.求余运算符;
- 用于计算两个运算数整除后的余数
console.log(100 % 3);// 1
//求余运算符;获取除法之后余数
console.log(8 % 4);// 0
console.log(100 % -3);// 1
//求余结果是正数还是负数,与第一操作数是正数或负数有关(与第二个操作数无关)
console.log(8 % -4);// 0
console.log(-100 % 3);// -1
console.log(-8 % 4);// 0
console.log(-100 % -3);// -1
console.log('爱新觉罗' % 2);// NaN
//与减法的情况保持一致
5.自增运算符;
- 前置自增运算符;++变量名先自增,再赋值;后置自增运算符;变量名++先赋值,再自增
var num = 10;
console.log(num);//10
var result = ++num;
console.log(result);//11
console.log(num);//11
var result = num++;
console.log(result);//10
console.log(num);//11
/*自增运算符;操作变量的值
每自增一次(+1)
前置自增运算符;++变量名
先自增,再赋值
后置自增运算符;变量名++
先赋值,再自增
*/
二。比较运算符
1.比较运算符;
- 检查两个运算数的值是否相等和大小
console.log(10 > 11);//false
console.log(11 > 10);//true
console.log(10 >= 10);//true
//number类型
console.log(true > false);//true
console.log(true > 0);//true
//boolean类型;将boolean类型转换为number类型
console.log('a'< 'b');//true
console.log('a'> 'A');//true
console.log('abc' > 'cba');//false
console.log('abc' > 'acd');//false
/*string类型;1英文;2中文
* */
console.log('我' > '你');//true
2.相等与不等;
- 以相等(==)和(!=)运算符只比较操作数的值,不比较类型
console.log(10 == 10);// true
console.log(10 == 11);// false
// 1.number类型
console.log(true == true);// true
console.log(true == false);// false
// 2.boolean类型
console.log(true == 1);// true
console.log('a' == 'a');// true
console.log('a' == 'b');// false
// 3.string类型
console.log('100' == 100);// true
// 只比较值,而不比较类型
/*
相等比较运算符
* 与赋值运算符的区别
* 赋值运算符(=)
* 相等比较运算符(==)
不等比较运算符
* 符号是'!='
* 不是'<>'
*/
3.全等与不全等;
- 以相等(===)和(!==)运算符只比较操作数的值,比较类型
console.log(10 === 10);// true
console.log('10' === 10);// false
console.log('10' == 10);// true
//全等和不全等;不仅比较值,比较类型
4.isNaN()函数;
- 用于判断参数是否是NaN(不是数字值)
console.log(isNaN(100));
console.log(isNaN(Number('爱新觉罗')));
/*isNaN()函数
* 作用;判断值是否为NaN
* true;表示值为NaN(不是个数值)
* false;表示值为NaN(不是个数值)
* */
var result = 100/0;
console.log(result);// Infinity
console.log(isFinite(result));// false
/*isFinite()函数
* 作用;判断值是否无穷大
* false;表示值是无穷大
* true;表示值是有限数值
*/
三。逻辑运算符
1.逻辑运算符;
以&&逻辑与运算符如果两个运算符,都是true,则返回true
以||逻辑与运算符如果两个运算符,其中任何一个true,则返回true
2.逻辑与运算符
以&&逻辑与运算符如果两个运算符,都是true,则返回true
console.log(true && true);// true
console.log(true && false);// false
console.log(false && true);// false
console.log(false && false);// false
/*
将逻辑与运算符两个操作数,转换为布尔类型
* 当左边操作数为true,结果为右边操作数的值
* 当左边操作数为false,结果为左边操作数的值
*/
console.log(100 && 1);// 1
console.log(1 && 0);// 0
console.log(0 && 1);// 0
console.log(0 && 0);// 0
console.log(true && true);
console.log(true && false);
console.log(false && true);
console.log(false && false);
console.log('爱新觉罗' && '爱新觉罗');// 爱新觉罗
console.log('爱新觉罗' && '');// ''
console.log('' && '爱新觉罗');// ''
console.log('' && '');// ''
console.log('爱新觉罗' && 1);// 1
console.log(false && 0);// false
3.逻辑或运算符;
- 以&&逻辑与运算符如果两个运算符,都是true,则返回true
console.log(true || true);// true
console.log(true || false);// true
console.log(false || true);// true
console.log(false || false);// false
/*
将逻辑与运算符两个操作数,转换为布尔类型
* 当左边操作数为true时,结果为左边操作数的值
* 当左边操作数为false时,结果为右边操作数的值
*/
console.log(100 || 1);// 100
console.log(1 || 0);// 1
console.log(0 || 1);// 1
console.log(0 || 0);// 0
console.log(true || true);
console.log(true || false);
console.log(false || true);
console.log(false || false);
console.log('爱新觉罗' || '爱新觉罗');// 爱新觉罗
console.log('爱新觉罗' || '');// 爱新觉罗
console.log('' || '爱新觉罗');// 爱新觉罗
console.log('' || '');// ''
四。赋值运算符;
1.赋值扩展运算符;
- 就是赋值运算符和算数之间配合使用,也是一种简写形式
var b = 10, c = 20;
var a = b + c;
console.log(a);// 30
// b = b + c;
// 等价写法;赋值扩展运算符性能要比赋值运算符更高
b += c;
console.log(b);// 30
五。条件运算符;
1.条件运算符;
- 判断表达式是真和假,并判断结果执行其中2个给以指令得一个
var result = 9 > 8 ? '对' : '错';
console.log(result);
var score = 90;
score < 95 ? console.log('优秀') : console.log('及格');
2.条件运算符嵌套;
- 以每个表达式可以中一个条件运算表达式
var score = 55;
/*优点,扩展了运算符本身的计算能力
* 最多不要多过三层嵌套*/
var result = score > 90 ? '优秀' : (score > 80 ? '良好' : (score > 60 ? '及格' : '不及格'));
console.log(result);