JS操作符介绍及⽤法收集
JS逻辑运算符(&&、||、|、&)
1、JS中的||符号:
运算⽅法:
只要“||”前⾯为false,不管“||”后⾯是true还是false,都返回“||”后⾯的值。
只要“||”前⾯为true,不管“||”后⾯是true还是false,都返回“||”前⾯的值。
总结:真前假后
2、JS中的&&符号:
运算⽅法:
只要“&&”前⾯是false,⽆论“&&”后⾯是true还是false,结果都将返“&&”前⾯的值;
只要“&&”前⾯是true,⽆论“&&”后⾯是true还是false,结果都将返“&&”后⾯的值;
总结:假前真后
弄懂了以上说的还应该知道:
js的6个蛋蛋:在js逻辑运算中,0、”“、null、false、undefined、NaN都会判为false,其他都为true。
3、位运算符:|
运算⽅法:
两个位只要有⼀个为1,那么结果都为1。否则就为0
|运算符还能进⾏取整运算
4、位运算符:&
运算⽅法:
两个数值的个位分别相与,同时为1才得1,只要⼀个为0就为0。
JS条件运算符(?:、?.、??)
1、三元运算符:?
语法:表达式1?表达式2:表达式3
  表达式1是⼀个条件,值为Boolean类型
  若表达式1的值为true,则执⾏表达式2的操作,并且以表达式2的结果作为整个表达式的结果;
  若表达式1的值为false,则执⾏表达式3的操作,并且以表达式3的结果作为整个表达式的结果;
2、可选链操作符:?.
可选链操作符( . )允许读取位于连接对象链深处的属性的值,⽽不必明确验证链中的每个引⽤是否有效。?.操作符的功能类似于.链式操作符,不同之处在于,在引⽤为空( ) ( 或者 ) 的情况下不会引起错误,该表达式短路返回值
语法:obj?.prop  obj?.[expr]  arr?.[index]    func?.(args)
⽐如,思考⼀个存在嵌套结构的对象 obj。不使⽤可选链的话,查⼀个深度嵌套的⼦属性时,需要验证之间的引⽤,例如:
let nestedProp = obj.first && obj.first.second;
为了避免报错,在访问obj.first.second之前,要保证obj.first的值既不是null,也不是undefined。如果只是直接访问obj.first.second,⽽不
对obj.first进⾏校验,则有可能抛出错误。
有了可选链操作符(?.),在访问obj.first.second之前,不再需要明确地校验obj.first的状态,再并⽤短路计算获取最终结果:
let nestedProp = obj.first?.second;
3、控制合并运算符:??
当左侧的操作数为或者时,返回其右侧操作数,否则返回左侧操作数。
const nullValue = null;
const emptyText = ""; // 空字符串,是⼀个假值,Boolean("") === false
const someNumber = 42;
const valA = nullValue ?? "valA 的默认值";
const valB = emptyText ?? "valB 的默认值";
const valC = someNumber ?? 0;
console.log(valA); // "valA 的默认值"
console.log(valB); // ""(空字符串虽然是假值,但不是 null 或者 undefined)
console.log(valC); // 42
在这个例⼦中,我们使⽤空值合并操作符为常量提供默认值,保证常量不为null或者undefined。
JS运算符(...、|=)
1、展开运算符:...
可以在函数调⽤/数组构造时, 将数组表达式或者string在语法层⾯展开;还可以在构造字⾯量对象时, 将对象表达式按key-value的⽅式展开。(译者注: 字⾯量⼀般指[1, 2, 3]或者{name: "mdn"}这种简洁的构造⽅式)
等价于apply,如果想将数组元素迭代为函数参数,⼀般使⽤的⽅式进⾏调⽤。
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction.apply(null, args);
展开运算符的写法
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);
在 new 表达式中应⽤
使⽤new关键字来调⽤构造函数时,不能直接使⽤数组+ apply的⽅式(apply执⾏的是调⽤[[Call]] , ⽽不是构造[[Construct]])。当然, 有了展开语法, 将数组展开为构造函数的参数就很简单了:
var dateFields = [1970, 0, 1]; // 1970年1⽉1⽇
var d = new Date(...dateFields);
2、按位 OR 赋值运算符:|=
使⽤两个操作数的⼆进制表⽰,对它们执⾏按位 OR 运算并将结果分配给变量。
语法 Operator: x |= y
  Meaning:  x  = x | y
let a = 5;
a |= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
js合并两个数组// 7: 00000000000000000000000000000111

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。