运算符
这边的运算符是对上一篇博客的补充,各位大佬可以看完上一篇再来看这篇,毕竟自己写也是会忘记一些东西,不要介意呦。
这篇博客针对逻辑运算符、赋值运算符、连接运算符、运算符优先级、数值型的补充。
1.逻辑运算符
1.!在单目运算优先级优先,例如:
var res1 = !(1 > 2);
var res2 = !1>2;
console.log(res1);
console.log(res2);
运行结果如下:
2.非运算与其他不同的类型之间的运算。
var res2 = !{}; // false
console.log(res2);
var res3 = !""; // true
console.log(res3);
var res4 = !"dkdkdk"; // false
console.log(res4);
var res5 = !0; // true
console.log(res5);
var res6 = !34; // false
console.log(res6);
var res7 = !null; //true
console.log(res7);
var res8 = !NaN; // true
console.log(res8);
var res9 = !undefined; // true
console.log(res9);
运行结果如下:
3.&&运算
// 第一个操作数为对象 返回第二个操作数
var result = {} && "asf";
console.log(result); //asf
/*
如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回
该对象; 如果第一个操作数结果为false 这返回第一个操作数
*/
var result2 = "asd" && {};
console.log(result2); //{}
// 第一个与第二个操作数都是对象时 返回 第二个对象
var result3 = {} && {name:"asd"};
console.log(result3); //{name:"asd"}
// 如果第一个操作数是null或者NaN或者undefined则返回null NaN undefined
var result4 = null&& 1 < 2;
console.log(result4);
var result5 = "ss" && 12 && 1;//第一个操作符"ss"布尔值为true
console.log(result5); // 1
运行结果:
4.||运算
/* || 对于不是布尔类型的规则 */
// 1:如果第一个操作数是对象;返回对象
var a = {} || true;
console.log(a);
var a1 = {} || "sdad";
console.log(a1);
// 2:如果第一个操作数是false 返回第二个操作数
var a2 = 1 > 2 || "asf"; // asf
console.log(a2);
// 3:如果两个都是对象返回第一个对象
var a3 = { name: "dsf" } || {}; // {name:'dsf'}
console.log(a3);
// 4:只有两个都是null NaN undefined 返回null NaN undefined 反之 返回其他数据
var a4 = null || "sd"; // sd
console.log(a4);
var a5 = null || null; // null
console.log(a5);
运行结果如下:
2.赋值运算符
列举了部分例子,可以自己测试一些其他的例子。
var x = 1 ;
x += 2;// x = x+2
console.log(x);
x -=1; // x= x-1
console.log(x);
var a = x+1;// 2+1
a *= x;// a = a * x = 3*2
console.log(a);
运行结果:
3.连接运算符
// + 链接运算符;作用 字符串拼接
var str = 'asfr';
var is = '是';
var per = 'asdf';
var res = str + is + per;
console.log(res);
var num = 250;
var res1 = str + num ;
console.log(res1);
运行结果:
4.运算符优先级
运算符优先级:
小括号>算术运算符>比较运算符>逻辑运算符>赋值运算符
1:从左往右计算 () 里面最优先
2:全体单目 ++ -- ! 【单目 只有一个操作数和操作符就可以运算的】
3:乘法除法取余
4:加减
5:移位(<< >>)
6:关系(< > <= >=)
7:等于不等于
8:逻辑运算符&& 优先 ||
9:赋值
10 逗号
举出短路的两个例子:
var res1 = 1>2 && 7+8+9>100 && null;
console.log(res1);
var res2 = 2>1 || 83>32490+32847 || 0 || 7>8;
console.log(res2);
运行结果:
5.数值型
除加号外 所有的【算数运算符】的表达式;返回结果都是【数值型】
console.log(0.1+0.2); // 不等于0.3
var num = 1 + true;
console.log(num);
var num1 = 1-'1';
console.log(num1);
var num2 = 1-null;
console.log(num2);
var num3 = 1-undefined; // NaN
console.log(num3);
var num4 = 1 - ['ffff'];
console.log(num4);
var num5 = 1-'dsg';
console.log(num5);
var num6 = 1 -{};
console.log(num6);
var num7 = (0.1 + 0.2)==0.3;
console.log(num7);//false
// 科学计数法
var a = 12e3; // 12 * 10*10*10
console.log(a);
运行结果:
总结
虽然这次也是补充上一次博客的不足,但是博主并不能将一些例子一一列举出来,所以希望各位大佬可以通过自己的学习和测试,举出一些博主没有列举的例子,这样会更加容易理解,而且还不容易忘。