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