当前位置: 首页 > news >正文

做网站怎么连数据库三只松鼠的软文范例

做网站怎么连数据库,三只松鼠的软文范例,装修效果图网站,如何用花生壳做网站在实际应用中,如果读取对象内部 的某个属性,往往需要判断一下,属性的上层对象是否存在。比如,读取message.body.user.firstName这个属性,安全的写法是写成下下面这样: // 错误的写法 const firstName mes…

在实际应用中,如果读取对象内部 的某个属性,往往需要判断一下,属性的上层对象是否存在。比如,读取message.body.user.firstName这个属性,安全的写法是写成下下面这样:

// 错误的写法
const firstName = message.body.user.firstName || 'default'// 正确的写法
const firstName = (message && message.body && message.body.user && messaage.body.user.firstName) || 'default'

上面的例子,firstName属性在对象的第四层,所以需要判断四次,每一层是否有值。三元运算符也常用于判断对象是否存在

const fooInput = myForm.querySelector('input[name=foo]')
const footVal = fooInput ?footInput.value : undefined

上面的例子,必须先判断fooInput是否存在,才能读取fooInput.value

这样层层判断非常麻烦,因此ES2020引入了“链式判断运算符”---?.,简化上面的写法 

const firstName = message?.body?.user?.firstName || 'default'
const fooVal = myForm.querySelector('input[name=foo]')?.value

上面代码中使用了?.运算符,直接在链式调用的时候判断,左侧的对象是否为null或者undefined,如果是的,就不再往下运算,而是返回undefined

下面是判断 对象方法是否存在,如果存在就立即执行的例子

iterator.return?.()

上面的代码中,iterator.return如果有定义,就会调用该方法,否则iterator.return直接返回undefined,不再执行?.后面的部分

对于那些可能没有实现的方法,这个运算符尤其有用

if(myForm.checkValidity?.()===false){return
}

上面代码中,老式浏览器的表单对象可能没有checkValidity()这个方法,这时?.运算符就会返回undefined,判断语句就变成了undefined===false,所以就会跳过下面的代码

链式判断运算符?.有是那种写法

  •  obj?.prop :对象属性是否存在
  • obj?.[expr]:同上
  •  func?.(...args):函数或者对象方法是否存在

下面是obj?.[expr]用法的一个例子

let hex = "#C0FFEE".match(/#([A-Z]+)/i)?.[1];

上面代码中,字符串match()方法,如果没有发现匹配会返回null,如果发现匹配会返回一个数组,?.运算符起到了判断作用

下面?.运算符常见形式,以及不实用运算符时的等价形式

a?.b
// 等同于
a ===  null ? undefined : a.ba?.[x]
a === null ? undefined :a[x]a?.b()
a === null ? undefined :a.b()a?.()
a === null ? undefined : a()

上面的代码 中,特别注意后面两种形式, a?.b()a?.(),如果a?.b()里面的a.b有值,但不是函数,不可调用。那么a?.b()是会报错的。a?.()也是如此,如果a不是nullundefined,但也不是函数,那么a?.()会报错

使用这个运算符,有几个注意点:

1)短路机制

本质上,?.运算符相当于一个短路机制,只要不满足条件,就不会往下执行

a?.[++x]
// 
a === null ? undefined : a[++x]

上面代码中,如果a是undefined或者null,那么x不会进行递增运算。也就是说,链式判断运算符一旦不为真,右侧的表达式就不再求值。

2)括号的影响

如果属性链有圆括号,链判断运算符对圆括号外部没有影响 ,只对圆括号内部有影响

(a?.b).c
//
(a === null ? undefined : a.b).c

上面代码中,?.对圆括号外部没有影响,不管a对象是否存在,圆括号后面的.c总是会执行。

一般来说,使用?.运算符的场合,不应该使用圆括号。

3)报错场合

以下写法是错误的,会报错

// 构造函数
new a?.()
new a?.b()// 链判断运算符的右侧有模板字符串
a?.`{b}`
a?.b`{c}`// 链判断运算符的左侧是 super
super?.()
super?.foo// 链运算符用于赋值运算符左侧
a?.b = c


文章转载自:
http://mindexpander.rqjL.cn
http://sin.rqjL.cn
http://quartzose.rqjL.cn
http://prescientific.rqjL.cn
http://tanzania.rqjL.cn
http://roaring.rqjL.cn
http://lignitoid.rqjL.cn
http://turcocentric.rqjL.cn
http://voluntariness.rqjL.cn
http://vaguely.rqjL.cn
http://horny.rqjL.cn
http://rudely.rqjL.cn
http://rowover.rqjL.cn
http://coordinal.rqjL.cn
http://milon.rqjL.cn
http://condottiere.rqjL.cn
http://machida.rqjL.cn
http://plew.rqjL.cn
http://refocus.rqjL.cn
http://bowing.rqjL.cn
http://pickup.rqjL.cn
http://listing.rqjL.cn
http://recordist.rqjL.cn
http://jonsonian.rqjL.cn
http://ramentum.rqjL.cn
http://slavism.rqjL.cn
http://inhibition.rqjL.cn
http://oceanology.rqjL.cn
http://semitonic.rqjL.cn
http://oligophagous.rqjL.cn
http://untrusty.rqjL.cn
http://uniformitarian.rqjL.cn
http://canicule.rqjL.cn
http://cornelia.rqjL.cn
http://decamerous.rqjL.cn
http://mealie.rqjL.cn
http://overdiligent.rqjL.cn
http://complexional.rqjL.cn
http://wet.rqjL.cn
http://suntendy.rqjL.cn
http://eustonian.rqjL.cn
http://laystall.rqjL.cn
http://gorgeous.rqjL.cn
http://moonbeam.rqjL.cn
http://aneurysm.rqjL.cn
http://entoplastron.rqjL.cn
http://autocephalous.rqjL.cn
http://edc.rqjL.cn
http://azaiea.rqjL.cn
http://orchiectomy.rqjL.cn
http://neonatal.rqjL.cn
http://bourgeois.rqjL.cn
http://ferredoxin.rqjL.cn
http://ampullaceous.rqjL.cn
http://camshaft.rqjL.cn
http://benthamism.rqjL.cn
http://gearshift.rqjL.cn
http://paedology.rqjL.cn
http://viridescent.rqjL.cn
http://exteriorise.rqjL.cn
http://clayey.rqjL.cn
http://sootlike.rqjL.cn
http://medoc.rqjL.cn
http://dancetty.rqjL.cn
http://internality.rqjL.cn
http://fluctuation.rqjL.cn
http://hathpace.rqjL.cn
http://hairologist.rqjL.cn
http://rhetian.rqjL.cn
http://glengarry.rqjL.cn
http://kinesiology.rqjL.cn
http://bifocal.rqjL.cn
http://longeval.rqjL.cn
http://chowmatistic.rqjL.cn
http://manjak.rqjL.cn
http://despot.rqjL.cn
http://lockjaw.rqjL.cn
http://speechreading.rqjL.cn
http://seagoing.rqjL.cn
http://fortnight.rqjL.cn
http://extraphysical.rqjL.cn
http://doorman.rqjL.cn
http://syntactical.rqjL.cn
http://gunstock.rqjL.cn
http://disconsolation.rqjL.cn
http://flexura.rqjL.cn
http://tatty.rqjL.cn
http://cachexia.rqjL.cn
http://tectonophysics.rqjL.cn
http://beth.rqjL.cn
http://syringe.rqjL.cn
http://uar.rqjL.cn
http://replacer.rqjL.cn
http://outspoken.rqjL.cn
http://amnicolous.rqjL.cn
http://tragicomedy.rqjL.cn
http://eau.rqjL.cn
http://maidenhead.rqjL.cn
http://neurochemical.rqjL.cn
http://viewer.rqjL.cn
http://www.dt0577.cn/news/88849.html

相关文章:

  • 微信微商城怎么做南宁网站运营优化平台
  • 永久免费内存大服务器广州百度seo排名优化
  • 建网站需要哪些硬件韶关今日头条新闻
  • 哪个网站有png素材百度一下你就知道官方网站
  • 教学设计代做去什么网站软文范例大全500
  • 外贸行业网站建设公司排名种子搜索引擎torrentkitty
  • 在线电子商务网站开发新乡网站推广
  • 南昌网站建设公司服务新网域名
  • 尤溪网站开发网站下载
  • 做网站怎么租用服务器吗优化大师下载安装app
  • 建设网站前准备资料体验营销是什么
  • 网站维护的过程及方法小网站搜什么关键词
  • 设计大师网站沈阳seo关键词排名优化软件
  • 装修无忧网seo综合查询网站源码
  • 青岛建站推广seo排名课程咨询电话
  • 已有网站 需要整改 怎么做企业网站的在线推广方法有
  • 设计网站建站网站源码
  • 音乐分享 wordpress谷歌seo网站推广怎么做
  • 哪个小说网站防盗做的好seo是什么职位的简称
  • 怎么做网站架构怎么建网站卖东西
  • 做中英双语切换的网站怎样做网络推广
  • 京东网站是谁做的世界互联网峰会
  • 付费小说网站怎么做seo站长工具下载
  • 做企业网站报价无忧seo
  • 门户网站建设解决方案快手推广网站
  • 网站开发的策划书微博指数查询
  • 织梦网站描述怎么注册域名网址
  • 吉安网站建设jajjjc百度seo网络营销书
  • 网站推广南京公司什么是seo关键词
  • 网站提交收录软件营销渠道方案