• 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、可选链操作符:?.

    可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值

    语法: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、控制合并运算符:??

    当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。

    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.prototype.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
    // -----------------------------------
    // 7: 00000000000000000000000000000111
  • 相关阅读:
    flask helloworld
    (16)centos7 日志文件
    (15)centos7 系统服务
    (14)centos7 进程管理
    (13)centos7 任务计划
    (12)centos7 环境变量配置
    [BZOJ2045]双亲数(莫比乌斯反演)
    bzoj2018 [Usaco2009 Nov]农场技艺大赛
    bzoj 1001 [BeiJing2006]狼抓兔子
    bzoj 5056: OI游戏 最短路树的计数
  • 原文地址:https://www.cnblogs.com/qingdaye/p/14990897.html
Copyright © 2020-2023  润新知