缘由
java中有一个容器类optional,用于处理空指针异常。它的方法返回的是optional对象,所以你可以继续使用返回的optional对象进行链式调用。
在前端开发中,我们使用if判断、可选链式符、try catch等方式处理,通过otional类可以优化处理
java中optional类方法
optional类
class Optional {
//初始化
constructor(value) {
this.value = value;
}
// 静态方法 创建实例
static of(value) {
return new Optional(value);
}
// 静态方法 null值处理
static ofNullable(value) {
return Optional.of(value);
}
// 对象判断
isPresent() {
return this.value !== undefined && this.value !== null;
}
// 默认值判断
orElse(defaultValue) {
return this.isPresent() ? this.value : defaultValue;
}
// 链式方法
map(mapper) {
if (this.isPresent()) {
const mappedValue = mapper(this.value);
return Optional.of(mappedValue);
}
return Optional.ofNullable(null);
}
}
调用获取name属性的长度
function getNameLength(person) {
return Optional.ofNullable(person)
.map((p) => p.name)
.map((name) => name.length)
.orElse(0);
}
const person1={name:"json yeu"}
console.log(getNameLength(person1))