JS 中强大的操作符

1.0 数值操作符_
let num = 1000_0000
console.log(num) // 10000000
2.0 逗号运算符 ,
function resver(arr){
    return [arr[0],arr[1]]=[arr[1],arr[0]],arr[0]+arr[1]
}
let list =[1,2]
console.log(resver(list)) //3
console.log(list) //[2,1]
3.0零合并操作符 ?? (||)
/**零合并操作符 ?? 是一个逻辑操作符,
  *当左侧的操作数为 null 或者 undefined 时,返回右侧操作数,否则 
  *返回左侧操作数;
  *?? 可以理解为是 || 的完善解决方案。
*/
undefined || 'default' // 'default'
null || 'default'      // 'default'
false || 'default'     // 'default'
0 || 'default'         // 'default'

undefined ?? 'default' // 'default'
null ?? 'default'      // 'default'
false ?? 'default'     // 'false'
0 ?? 'default'         // 0

let a={b:null,c:20}
a.b??=20
a.c??=30
console.log(a) //{b:20;c:20}

4.0可选链操作符?. (&&)
/**
   *?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为 
   *null 或者 undefined 的情况下不会引起错误,该表达式短路返回值 
   *是 undefined
*/
let obj ={
    a:"foo",
    b:{
        c:"bar"
    }
}
console.log(obj.b ?. c) //bar
console.log(obj.d ?. c) //undefined
console.log(obj.func?. c) // undefined
console.log((obj.b ?. c) == (obj&&obj.b && obj.b.c)) //true

5.0 私有方法 / 属性
class Person{
    getDesc (){
        return `${this.#name},${this.#getAge()} `
    }
    #getAge(){
        return `${this.#age}`
    }
    get #name(){return 'foo'}
    #age =23

}
let person = new Person()
console.log(person.getDesc()) // foo,23
console.log(person.age) //undefined
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容