JavaScript作为一种广泛使用的脚本语言,不断演变发展。有几种常用的判空方法,用于简化代码编和处理可能的空值情况。我们一起来看看吧🤓
一、逻辑或赋值运算符
let a = 0;
if(!a){
a=1;
}
console.log(a)
//输出1
等价于
let a = 0;
a = a || 1;
console.log(a)
//输出1
第一种方式是我们常用判断a变量为真时,给变量赋值为1,看起来不那么简洁,所以咱们也可以用第二种方式,中间的双管道运算符代表判断 null 与 undefind 。
注意:当a不为null并且不为undefind时并且不为0,比如a=0,此时a变量不会被重新赋值为1。
二、逻辑与赋值运算符
let b = 1
if(b){
b = 2
}
console.log(b);
//输出2
等价于
let b = 1
b = b && 2
console.log(b);
//输出2
第二种方式解析:声明并赋值一个变量b的值为2,当b为真(不为null 、undefind、0)就重新赋值2给变量b
三、 逻辑空赋值运算符
let c ;
if(c == undefined || c == null ){
c = 3;
}
console.log(c);
//输出3
等价于
let c ;
c = c ?? 3;
console.log(c);
//输出3
第二种方式解析:声明一个变量c(此时c的值默认为undefind),两个问号(??)代表为null 或者为 undefind ,这个条件成立时,会重新赋值3给变量c
对象访问链式运算符
let userInfo = {
account: 0000001,
name: "张三",
age: 18,
sex: "sale",
address: null
};
console.log(userInfo.address.street);
//报错:TypeError: Cannot read properties of null (reading 'street')
对象访问链式运算符示例代码解析:声明对象userInfo并赋值,其中address属性为null,我们在业务代码中需要获取到这个对象的address值,此时按照常规的【点】(.)对象获取属性值的方式会抛出异常,如果我们写代码时没有考虑到这层关系,会导致某些业务操作无法进行。针对这种现象,当address值为null或undefind时,为了让程序不会抛出异常,可以使用如下方式进行获取值。(对象访问链式运算符【?.】)
let userInfo = {
account: 0000001,
name: "张三",
age: 18,
sex: "sale",
address: null
};
console.log(userInfo.address?.street);
//输出:undefind(程序不会抛出异常,在后面的逻辑中做好非空判断则不会影响程序正常运行)
对象访问链式运算符 如果 address 不为null 且不为undefind,有值的情况下,也是可以正常获取到值的。
let userInfo = {
account: 0000001,
name: "张三",
age: 18,
sex: "sale",
address: {
province: "HuNan",
city: "ChangSha",
street: "XingSha"
}
};
console.log(userInfo.address?.street);
//输出:XingSha
最后,在日常的JavaScript开发中,正确、合理使用这些语法特性有助于提高开发效率和代码质量。我们一起进步吧,小伙伴们加油🤏