在今年的 JavaScript 的新版本中,即 ES11 中,引入了几个新的语言特性,这些特性将使前端开发更加便利和高效。其中,可选类型属性和 nullish 合并运算符是重磅特性之一。本文将详细介绍它们的具体含义和用法。
可选类型属性
可选类型属性是指在 JavaScript 类型中增加了一种新的类型,即可选类型。它可以表示一个属性是可选或者缺失的。在以往的 JavaScript 中,开发人员不能准确地判断对象中是否存在某个属性,导致代码中经常需要做判断,如果没有的话则给它一个默认值。然而在实际应用中这种做法效率很低,容易出现漏洞。而可选类型属性的出现可以有效地解决这个问题。
在以往的版本中,我们可以使用如下代码进行属性是否存在的判断:
if(obj && obj.property){ // 如果属性存在,则执行相应的操作 }
而在 ES11 中,我们可以使用可选类型属性进行判断,代码就可以写成如下形式:
if(obj?.property){ // 如果属性存在,则执行相应的操作 }
这样就不用再多次进行判断,而代码显得更加简洁明了。
除了上面的用法之外,可选类型属性还可以用于定义函数的参数:
function foo(obj = {}){ const {propertyOne, propertyTwo} = obj; // 可以使用可选类型属性来对对象的属性进行判断 }
这里的 obj = {}
表示传入的参数可以是一个对象,如果没有传入,则默认值为一个空对象。
需要注意的是,可选类型属性只能用于对象的属性访问,不能用于数组的元素访问。例如,以下代码会抛出错误:
const arr = [1, 2, 3]; const value = arr?[0]; // 会抛出错误
nullish 合并运算符
nullish 合并运算符是一种新的运算符,它可以用于判断一个变量的值是否是 null 或 undefined,如果是,则返回一个默认的值。使用方式如下:
const value = a??b;
其中,如果变量 a 的值为 null 或 undefined,则返回变量 b 的值。否则,返回变量 a 的值。
与传统的逻辑运算符(如 ||
)不同的是,nullish 合并运算符只有在变量的值为 null 或 undefined 时才会返回默认值。否则,它返回变量的实际值。
例如,以下代码中,我们使用了 nullish 合并运算符来避免出现空指针错误:
const name = user?.name ?? '未知用户';
这里的 user?.name
表示判断 user 是否存在,如果存在则返回 user.name 的值。否则,返回 undefined。再加上 ??
运算符,就可以避免出现空指针异常。
需要注意的是,nullish 合并运算符只能用于判断变量是否为 null 或 undefined,不能用于其他数值的判断。例如,以下代码无法使用 nullish 合并运算符:
const value = a > 0 ?? b; // 会抛出错误
总结
ES11 中引入的可选类型属性和 nullish 合并运算符都是非常实用的语言特性,它们大大提升了代码的可读性和可维护性。在实际开发中,我们应该尽可能地利用这些新特性,以提高自己代码的质量和效率。
代码示例:
const user = { name: 'Tom' }; const name = user?.name ?? '未知用户'; console.log(name) // Tom
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a3cd11add4f0e0ffbf7567