在Node.js中,非空判断是一个常见的需求,用于确保变量或对象在使用前具有有效的值。以下是一些基础概念和相关方法:
null
或undefined
。以下是一些常见的非空判断方法及其应用场景:
function printName(name) {
if (name !== null && name !== undefined) {
console.log(`Name: ${name}`);
} else {
console.log("Name is not provided.");
}
}
printName("Alice"); // 输出: Name: Alice
printName(null); // 输出: Name is not provided.
function printUser(user) {
if (user && typeof user === 'object' && !Array.isArray(user)) {
console.log(`User: ${JSON.stringify(user)}`);
} else {
console.log("Invalid user object.");
}
}
printUser({ name: "Bob", age: 30 }); // 输出: User: {"name":"Bob","age":30}
printUser([]); // 输出: Invalid user object.
ES2020引入了可选链操作符?.
,简化了对深层嵌套对象的访问:
const user = {
profile: {
name: "Charlie"
}
};
console.log(user?.profile?.name); // 输出: Charlie
console.log(user?.address?.city); // 输出: undefined,不会抛出错误
TypeError: Cannot read property 'xxx' of null
?原因:尝试读取一个空对象或null
的属性。
解决方法:
function getUserName(user) {
return user ? user.name : "Unknown";
}
console.log(getUserName({ name: "Dave" })); // 输出: Dave
console.log(getUserName(null)); // 输出: Unknown
解决方法:使用数组过滤方法去除空值。
const numbers = [1, 2, null, 4, undefined, 6];
const filteredNumbers = numbers.filter(num => num !== null && num !== undefined);
console.log(filteredNumbers); // 输出: [1, 2, 4, 6]
通过以上方法,可以有效进行非空判断,提升代码的可靠性和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云