• ||与??的区别,??非空运算符,??=非空赋值运算符 ??.链判断运算符 Object.defineProperty 与Proxy的区别


    js中 || 与??的区别

    :值1 ?? 值2
    值1 || 值2
    使用?? 只有当值1 为null或者undefined时才返回值2
    使用 || 值1 会转换为布尔值判断,为true返回 值1 ,false 返回值2


    ??非空运算符


    ??=空赋值运算符

    ,仅当值为null/undefined时才会赋值

    空赋值运算符和默认参数的区别:
    空赋值在没有赋值或者时null undefined时,才会赋值
    默认参数,当有参数时除了undefined,都会被赋值
    demo:
    function demo1(options){
    options.a??=1;
    options.b??=2;
    return options;
    }
    function demo2(a=1,b=2){
    return {"a":a,"b":b}
    }

    demo1(null,undefined); {a:1,b:2}
    demo2(null,undefined); {a:null,b:2}


    ?.链判断运算符


    允许开发人员读取深度嵌套在对象链中的属性值,而不必验证每个引用。当引用为空时,表达式停止计算并返回undefined
    var travelPlans = {
    destination: 'DC',
    monday: {
    location: 'National Mall',
    budget: 200
    }
    }
    console.log(travelPlans.tuesday?.location) // => undefined

    Object.defineProperty与proxy的区别


    Object.defineProperty
    Object.definedProperty() 方法会直接在一个对象山定义一个新属性,或者修改一个对象的现有属性,并返回此对象

    检测不到对象属性的添加和删除
    数组API方法无法监听到
    需要对每个属性进行遍历监听,如果嵌套对象,需要深层监听,造成性能问题
    proxy

    proxy的监听是针对一个对象的,那么对这个对象的所有操作会被被进入监听操作,这就完全可以代理所有的属性了

  • 相关阅读:
    Python--学习过程
    线程、进程、协程
    socket
    面向对象--进阶
    面向对象--初级
    Python常用的模块
    2019-2020-1 20191301《信息安全专业导论》第十二周学习总结
    wirehark
    2019--2020第十一周信息安全导论论总结20191301
    2019--2020信息安全导论第10周总结20191301
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/14428410.html
Copyright © 2020-2023  润新知