当前位置: 首页 > 科技观察

很多人不知道的四种现代JavaScript技术

时间:2023-03-17 15:34:48 科技观察

JavaScript在不断的进化和升级,越来越多的新特性让我们的代码更加简洁。因此,在今天的文章中,我将与大家分享4个不常用的JavaScript运算符。让我们一起研究它们。1.可选链运算符这个特性非常有效,它防止了我的代码中的错误,甚至大大简化了它。例如,我们要打印一个人的名字,我敢打赌这很容易!没有困难。constshowName=(data)=>{console.log(data.user.name)}showName({user:{name:'fatfish'}})不幸的是,我太粗心了,没有将合法的showName作为必需参数传递,有些东西出错。constshowName=(data)=>{console.log(data.user.name)}showName('fatfish')你一定是一个有经验的软件工程师,所以很容易写出如下代码。constshowName=(data)=>{console.log(data&&data.user&&data.user.name)}showName('fatfish')有没有更优雅的方式?如果数据层次嵌套太深,就是一段糟糕的代码。constshowName=(data)=>{console.log(data&&data.user&&data.user.person...)}showName('fatfish')别担心,可选链运算符可以帮助我们。下面的代码不再抛出错误,这很棒。constshowName=(data)=>{console.log(data?.user?.name)}showName('fatfish')什么是可选的链接运算符?来自mdn的解释:可选的链接运算符(?.)访问对象的属性或调用函数。如果对象是undefined或null,它返回undefined而不是抛出错误。constadventurer={name:'Alice',cat:{name:'Dinah'}}constdogName=adventurer?.dog?.nameconsole.log(dogName)//预期输出:undefinedconsole.log(adventurer.someNonExistentMethod?.())//预期输出:undefined2。组合赋值(??=)来自mdn的解释:空值组合赋值(x??=y)运算符只在x为空值(null或undefined)时才赋值。constobj={name:'fatfish'}obj.name??='medium'obj.age??=100console.log(obj.name,obj.age)是的,最后只赋了age属性。小伙伴们,你们觉得哪一行代码更接近??=??的功能呢?答案1还是答案2?//1.x??(x=y)//2.x=x??y我想你猜对了,答案是1。因为答案2在任何情况下都会赋值x,而答案1只有在x为真时才赋值。它能为我们做什么?那么,我们可以用它做什么呢?是的,它可以做与默认参数完全相同的事情。constshowName=(name)=>{name??='fatfish'console.log(name)}showName('medium')//mediumshowName()//fatfish几乎等同于下面的代码。constshowName=(name='fatfish')=>{console.log(name)}showName('medium')//mediumshowName()//fatfish好吧,我不得不承认写默认参数让我更开心。3.逻辑或赋值(||=)来自mdn的解释:逻辑或赋值(x||=y)运算符只在x为假时赋值。constobj={name:'',age:0}obj.name||='fatfish'obj.age||=100console.log(obj.name,obj.age)//Fatfish1000个好友可以看到,当x的值为false,赋值成功。它能为我们做什么?来自mdn:如果“歌词”元素为空,则显示默认值:document.getElementById("lyrics").textContent||="Nolyrics."短路在这里特别有用,因为元素不会进行不必要的更新,也不会导致不必要的副作用,例如额外的解析或渲染工作,或失去焦点等。4.逻辑与赋值(&&=)来自mdn:逻辑与赋值(x&&=y)运算符仅在x为真时才赋值。与逻辑或赋值(||=)相反,只有x为真时赋值才为真。constobj={name:'fatfish',age:100}obj.name&&='medium'//mediumobj.age&&=1000//1000console.log(obj.name,obj.age)//medium1000写入最后,以上内容就是我今天分享给大家的关于JavaScript运算符的4个知识点。如果觉得有用,请记得点赞、关注我,并把这篇文章分享给你的朋友。也许能帮到他。最后,感谢阅读,祝编程愉快!