1.空值合并操作符??

例如我们日常写的代码

let b;
let a = 0;
let c = { name:'yyqx' }if(!!a || a === 0 ){b = a;
}else{b = c;
}

当我们想判断一个值存在,但是它等于0的时候,我们也需要当作它存在,于是就有了上面那样的例子,其实我们还可以这样做

let b;
let a = 0;
let c = { name:'yyqx' }b = a ?? c;

上面的例子,当a除了undefined、或者null之外的任何值,b都会等于a,否则就等于c。

2.空值赋值运算符(??=)

let b = '你好';
let a = 0
let c = null;
let d = ’123‘
b ??= a;  // b = “你好”
c ??= d  // c = '123'

当??=左侧的值为null、undefined的时候,才会将右侧变量的值赋值给左侧变量.其他所有值都不会进行赋值.同样在一些场景下,可以省略很多代码.

3.可选链(.?)

let a;
let b = a.name;

该情况下,a并没有name属性,会报错。

一般情况下,我们会如下方法

let a;
let b;
if(!!a){b = a.name;
}else{b = undefined;
}

该方法 代码长,我们可用?.来写,如下

let a;
let b = a?.name;

只有当a存在,同时a具有name属性的时候,才会把值赋给b, 若a.name不存在。则将undefiend赋值给b,重要的是,不管a存在与否,这么做都不会报错.

js中问号点的作用(?.)和问号问号(??)(??=)的用法相关推荐

  1. JS中关键字in的作用

    JS中关键字in的作用 in关键字可以用来检测某个属性是否存在某个对象中,对于对象的属性要用字符串指定属性的名称("属性名") // 举个栗子:console.log(" ...

  2. JS中map()与forEach()的用法

    JS中map()与forEach()的用法 相同点: 1.都是循环遍历数组中的每一项 2.每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组) 3. ...

  3. js中的innerHTML的作用

    js中常常用到innerHTML,其作用就是获取到标签里面的内容,同时也可以为标签添加内容 <div><p id="text">hello world< ...

  4. js最简单的几个特效_高阶函数不会用?教你JS中最实用的几个高阶函数用法

    不废话,先来看下什么是高阶函数 高阶函数 函数可以作为参数传递 函数可以作为返回值输出 函数作为参数传递 回调函数 在ajax异步请求的过程中,回调函数使用的非常频繁 在不确定请求返回的时间时,将ca ...

  5. js中 replace(/\//g, '') 什么作用. 正则表达式

    replace(/\//g, '') 的作用是把/替换成''. 用法如下: 比如:var aa= "adsdd/sdsd12/"; bb=aa.replace(/\//g, '') ...

  6. Vue.js 中created方法的作用【学习】

    1.这是它的一个生命周期钩子函数,就是一个Vue实例被生成后调用这个函数,一个Vue实例被生成后还要绑定到某个htm元素上,之后还要进行编译,然后再插入到document中.每一个阶段都会有一个钩子函 ...

  7. js中new操作符的作用及原理

    要知道new操作符的作用是什么,得先知道它干了什么事(原理): 它创建了一个新对象 它将构造函数的原型属性和方法挂载到新对象的__proto__(原型指针)上 他执行了构造函数并将构造函数的this指 ...

  8. js中in关键字的作用

    in关键字可以用来检测某个对象里是否存在某个属性,既可以是这个对象自身的属性,也可以是这个对象继承的属性,对于对象的属性需要用字符串指定属性的名称. 比如用in检测对象中是否存在"proto ...

  9. JS中的call()方法和apply()方法和slice()用法总结

    1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用是一样的. 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖 ...

  10. c语言中各种函数的作用,C语言常用函数用法大全

    C语言是当中广泛的计算机编程语言,是所有计算机编程语言的祖先,其他计算机编程语言包括当前流行的Java语言,都是用C语言实现的,C语言是编程效率高的计算机语言,既能完成上层应用开发,也能完成底层硬件驱 ...

最新文章

  1. HDU 4407 sum 容斥原理
  2. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析...
  3. 【机器学习】使用MLflow管理机器学习模型版本
  4. 京东智联云分布式低延时RTC系统
  5. 【SpringBoot】在IOC之外的类中使用IOC内部的Bean
  6. AI超人赛车手狂虐人类登Nature封面!1000台PS4训练,「苏菲」极限超车独霸赛道...
  7. 持续集成与持续部署实践_持续集成和部署的3个最佳实践
  8. java filter与servlet,Servlet中的Filter和Listener之间的区别(Java EE)
  9. Jmeter参数化HTTP request中Send Files With The Request的文件路径和文件名
  10. charles抓包工具的使用:手机抓包设置和安装证书
  11. Apache Shiro学习笔记(七)IniWebEnvironment
  12. java集成(支付宝)蚂蚁金服
  13. python mysql扩展,python-sql-faker:轻量级、易拓展的数据库智能填充开源库(Python实现版)...
  14. 【Nav2中文网】五、普通教程(九)Groot与行为树互动
  15. 《Windows游戏编程大师技巧》(第二版)第1章(下)
  16. php的swoole教程,PHP + Swoole2.0 初体验(swoole入门教程)
  17. Linux kernel Panic后自动重启机器的设置
  18. python基金比较上机题_手把手教你用python选基金
  19. Android开发技术周报 Issue#27
  20. H5缓存机制浅析-移动端Web加载性能优化【干货】

热门文章

  1. 中断控制器8259A
  2. 51单片机(动态数码管,静态数码管,led交通灯全部点亮)小白试图进阶菜鸟
  3. FITC-PEG-SH,荧光素-聚乙二醇-巯基的用途:用于修饰氨基酸,蛋白质等
  4. iPhone 7P已停用解决方案
  5. beta阶段第六次scrum meeting
  6. 创新微MinwSemi的LoRa模块在无线抄表中的应用
  7. 荒野行动pc版卡在获取服务器信息,《荒野行动》PC版更新卡在获取引擎信息 更新引擎卡住等解决方法...
  8. 04-查询窗口的使用
  9. Rattle :基于R的数据挖掘工具(1):简介和安装
  10. 电容式压力变送器故障现象及检修