在微搭中,我们经常需要获取表单的值来进行运算,比如我们计算分成,就需要根据每个人的提成额结合表单的总金额进行按比例分配。这时候计算的时候我们就需要判断我们取的值是否取到了,如果未取到值直接去计算的话往往会导致报错。
那如何去验证数据的有效性呢?这里我们用到了null、undefined和可选链操作符
1 什么是null
表示“无值”或“空值”。它是一个表示“没有对象”的原始值
通常用于显式地表示一个变量应该有一个对象,但目前没有
2 什么是undefined
表示“未定义”或“缺失的值”。它是一个表示变量未被赋值的原始值
当一个变量被声明但未被赋值时,或者一个函数没有返回值时,返回的就是 undefined
3 null和undefined是什么类型
null的类型是 object
console.log(typeof null); // "object"
undefined的类型是undefined
console.log(typeof undefined); // "undefined"
4 使用场景
null通常用于初始化变量,表示该变量将来会被赋值
let user = null; // 表示用户尚未登录
当变量被声明但未赋值时,或者函数没有返回值时,自动赋值为 undefined
let x; // x 是 undefined
function test() {}
console.log(test()); // 输出 undefined,因为没有返回值
5 相等性比较
在使用相等运算符(==)时,null 和 undefined 被认为是相等的
console.log(null == undefined); // true
但在使用严格相等运算符(===)时,它们是不相等的
console.log(null === undefined); // false
6 判断空值
if (value === "" || value === null || value === undefined) {
// 处理空值的情况
}
这是一种判断空值的方案,但是还有一种更简洁的方案
if (!value) {
// 处理空值的情况
}
使用 !value 会将以下值视为“假”:
“”(空字符串)
null
undefined
0(数字零)
NaN(非数字)
7 访问对象中不存在的属性会返回undefined
const obj = {
name: "Alice",
age: 30
};
console.log(obj.name); // 输出: "Alice"
console.log(obj.age); // 输出: 30
console.log(obj.gender); // 输出: undefined
8 可选链操作符
可选链(Optional Chaining)是 JavaScript 中的一种语法,用于安全地访问嵌套对象的属性。它的主要目的是避免在访问深层嵌套属性时出现错误,尤其是在某些中间属性可能为 null 或 undefined 的情况下。
可选链使用 ?. 运算符来访问对象的属性。它的工作原理是:
如果对象是 null 或 undefined,则整个表达式返回 undefined,而不会抛出错误
如果对象存在,则继续访问下一个属性
const user = {
name: "Alice",
address: {
city: "Wonderland"
}
};
console.log(user.address?.city); // 输出: "Wonderland"
console.log(user.address?.zip); // 输出: undefined
console.log(user.contact?.email); // 输出: undefined
为什么使用可选链
避免错误: 在访问嵌套属性时,如果某个中间属性为 null 或 undefined,使用可选链可以避免抛出 TypeError。例如,user.address.zip 如果 address 为 undefined,则会抛出错误,而 user.address?.zip 则不会
简化代码: 可选链使得代码更简洁,避免了多层嵌套的条件检查。例如,传统的方式需要写成
if (user && user.address && user.address.city) {
console.log(user.address.city);
}
使用可选链后,可以简化为
console.log(user.address?.city);
在阅读官方模板的时候会看到有大量的可选链的语法
总结
熟悉以上的知识点,在表达式绑定和编写自定义代码的时候会非常有用,有时候感觉逻辑写不出来,主要是一些必须掌握的知识点不熟悉导致的。