js语法_?.和??运算符的使用

更新日期: 2023-01-13阅读: 1.3k标签: 语法

1、?. (可选链运算符)

在js中,我们经常会访问对象下面的属性,但是对象的值可能会存在为:null、undefined的情况,这样就会报错:Uncaught TypeError: Cannot read properties of undefined 异常错误,导致程序无法进行运行。

而在真实的项目中,我们会经常处理这个情况,如果这个值就读这个值,没有也不能报错(进行兼容处理)。在以前没有这个运算符的时候,只能通过:三木运算符、if判断、或者try/catch等方式来处理。但是这些方式在特定情况下会很复杂 ,比如:

let name=obj.data.person.name

而使用?.则完美解决这个问题:

let name=obj?.data?.person?.name

当其中一链为null或者undefined时就返回undefined,这样即使中间缺少一个属性也不会报错。

结论:

?. 可以无限链下去,不论有多少属性,只要有最后可以访问到属性,就会直接赋值最后的属性值。否则当任何一个链出现问题,立刻停止,而后赋值undefined。


2、??(空值合并运算符)

?? 双问号后面是默认值(可常量、可变量)。

当然是在没有值得时候会默认 ?? 后边的值,但是有了默认值 ,那么 ?? 后的值也就不会在去默认了,也就是变成了 赋默认值。就跟三木运算一样,不满足会执行 : 后边的。

?? 和 || 相似,但也存在如下区别:

1. || 只会在左边的值为假值时返回右边的值 (0, '', undefined, null, false 等都为假值)。
2. ?? 是在左边的值为undefined或者null时才会返回右边的值。

如:

let obj={
a:0,
b:'',
c:null,
};
console.log(obj.a ?? 'fly63');//0
console.log(obj.a || 'fly63');//fly63

console.log(obj.b ?? 'fly63');//''
console.log(obj.b || 'fly63');//fly63

console.log(obj.c ?? 'fly63');//fly63
console.log(obj.c || 'fly63');//fly63
//obj.d为undefined
console.log(obj.d ?? 'fly63');//fly63
console.log(obj.d || 'fly63');//fly63

结论:

??是判断有没有值,||是判断真假。


链接: https://fly63.com/article/detial/12311

30-seconds-code:总结了大量的使用ES6语法实现的代码块

30-seconds-code这个项目是一个非常优秀的JavaScript项目,这里总结了大量的使用ES6语法实现的代码块,项目的设计目标就是更简洁,更高效,更快速的实现基础代码模块。

如何让Node.js支持ES6的语法【转载】

不同版本的Node.js对Babel有不同的支持力度。为了让Node.js支持所需的ES6语法,可以加入Babel的支持。

JavaScript 语法流派现状调查

我们通常会有意无意的把JavaScript和其他编程语言区分开,有一个重要因素是……由于它的特性本身(太灵活了吧),它似乎不仅仅是一种语言,而更像是一帮老司机在矫情造作之下乱伦出来的生态系统。

js基本语法

JavaScript是一种轻量性脚本语言 ,其语句以;结束,语句块用{...},js应许末尾不加,浏览器Js引擎会自动在每个语句的结尾补上,js功能主要是:动态修改html页面内容,包括创建、删除html页面元素、修改html页面元素的内容

带@的css语法,你知道多少?

css的顶层样式表由两种规则组成的规则列表构成,一种称为at—rule规则,也就是at规则,另一种是qualified rule,也就是普通规则。今天就学习一下at规则

es6 Module语法

export用于定义要输出的变量(let、var、const、function、class),定义的变量与值是动态绑定关系。匿名定义本质上是采用 default 为名称,与上面2个的区别是在加载时可以不用写大括号还能自定义名称。

es6中的语法_面试es6常用语法整理

箭头函数;扩展运算符 ...的一个通用的用法就是把对象展开;变量声明es6中不建议继续使用var来声明变量,推荐使用let和const声明,以此避免var声明存在的弊端

常见的JavaScript“陷阱”

随着ES6标准的普及,JavaScript已经拥有许多新的语法糖,这让我们编写可读的,高质量的代码变得更加方便,但即使这样仍然会遇到一些潜在的陷阱。

.htaccess文件RewriteRule语法规则

.htaccess文件是运行Apache Web Server的Web服务器的配置文件,对配置和重定向Apache Web Server文件系统很有用。在这里,我将讨论.htaccess文件RewriteRule语法规则。

什么是抽象语法树?「译」

AST 是抽象语法树的缩写词,表示编程语言的语句和表达式中生成的 token。有了 AST,解释器或编译器就可以生成机器码或者对一条指令求值。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!