当前位置: 首页 > Web前端 > JavaScript

ES11中的globalThis和optionalchains

时间:2023-03-26 23:29:11 JavaScript

小编今天更新这两个新特性主要是编码可以更方便,同时也增加了兼容性。global这个主要是提供一个标准的方式来获取不同环境下的信息。全局对象。可选链主要是增加获取对象中内容的安全性。1.globalThis对于WEB(浏览器)环境,js中的全局变量是window/self。相信大家对window了解的多,也比较熟悉。小编今天只知道自己的对象。从目前来看,也算是一样了。下面是一个延迟的例子setTimeout(()=>{console.log('lilei')},1000)//lilei因为上面的例子是一个全局方法,如果写全,应该是这样的window.setTimeout(()=>{console.log('lilei')},1000)//lileiself.setTimeout(()=>{console.log('lilei')},1000)//lilei也一样,我们可以自定义一种在不同环境下获取全局变量的方法,像这样constgetGlobal=()=>{if(typeofself!=='undefined'){returnself}if(typeofwindow!=='undefined'){returnwindow}if(typeofglobal!=='undefined'){returnglobal}thrownewError('Theglobalobjectcannotbefound')}consttestGlobal=getGlobal()console.log(testGlobal)在es11中引入globalThis后,一个上面一堆代码可以简写为console.log(globalThis)2.可选链之前看别人代码的时候发现了这个符号,但是上网搜的时候不知道怎么搜,所以我暂时搁置了,没仔细看直到我看到可选链的概念。我们先举一个实际的例子。我们在调用对象的属性或方法时,往往不知道后端传过来的数据是否有指定的属性。这时候我们的代码会这样写:constuser={address:{street:'1号街',getNum(){return'88'}}}conststreet=user&&user.address&&user.address.streetconsole.log(street)//No.1StreetconststreetNum=user&&user.address&&user.address.getNum&&user.address.getNum()//存在后调用console.log(streetNum)或者not//88号有可选链,我们的代码可以这样写conststreet=user?.address?.streetconsole.log(street)//1号街conststreetNum=user?.address?.getNum?.()console.log(streetNum)//88号是不是很方便也很清楚?今天的分享就到这里,又是进步的一天,一起加油吧!也可以扫描二维码,关注我微信公众号,蜗牛全栈