ES11 是 ECMAScript 的最新版本,它引入了一些新的关键字来处理变量声明和赋值。这些新的关键字包括 let
、const
和 nullish coalescing operator
。本文将详细介绍这些关键字的用法,并提供一些示例代码来帮助你更好地理解它们。
let 和 const
在 ES6 中,我们已经熟悉了使用 let
和 const
来声明变量。在 ES11 中,这两个关键字的用法没有变化,但是它们的作用范围有了一些改变。
在 ES11 中,let
和 const
仍然用于声明变量,但是它们的作用范围已经扩展到了块级作用域。在 ES6 中,let
和 const
的作用范围仅限于块级作用域,而在 ES11 中,它们的作用范围已经扩展到了 try/catch
块中的 catch
子句中。
try { // some code } catch (error) { let message = error.message; console.log(message); }
在上面的代码中,我们使用 let
声明了一个变量 message
,并在 catch
子句中使用它。在 ES11 中,这是合法的,因为 let
的作用范围已经扩展到了 catch
子句中。
另外,在 ES11 中,const
关键字也可以声明一个不可变的变量。在 ES6 中,我们已经可以使用 const
来声明一个不可变的变量,但是这个变量仍然可以被修改。在 ES11 中,const
关键字不仅可以声明一个不可变的变量,而且这个变量真的是不可变的。
const PI = 3.14; PI = 3.14159; // TypeError: Assignment to constant variable.
在上面的代码中,我们使用 const
声明了一个不可变的变量 PI
,并尝试修改它的值。在 ES11 中,这是不合法的,因为 const
声明的变量是不可变的。
nullish coalescing operator
在 ES11 中,还引入了一个新的运算符——nullish coalescing operator
,它用于处理变量为空或未定义的情况。
在 JavaScript 中,当一个变量的值为 null
或 undefined
时,我们通常会使用 ||
运算符来给它一个默认值。但是,||
运算符有一个问题,它会将一些非空值当作假值,这会导致一些意外的行为。
let name = ""; let defaultName = "John Doe"; let result = name || defaultName; console.log(result); // John Doe
在上面的代码中,我们使用 ||
运算符来给变量 name
一个默认值 defaultName
。但是,由于空字符串被视为假值,所以 result
的值是 defaultName
,而不是空字符串。这可能不是我们想要的行为。
在 ES11 中,我们可以使用 nullish coalescing operator
来避免这个问题。nullish coalescing operator
只会在变量的值为 null
或 undefined
时才会给它一个默认值。
let name = ""; let defaultName = "John Doe"; let result = name ?? defaultName; console.log(result); // ""
在上面的代码中,我们使用 nullish coalescing operator
来给变量 name
一个默认值 defaultName
。由于空字符串不是 null
或 undefined
,所以 result
的值是空字符串,而不是 defaultName
。
总结
在 ES11 中,我们引入了一些新的关键字来处理变量声明和赋值。这些新的关键字包括 let
、const
和 nullish coalescing operator
。let
和 const
的作用范围已经扩展到了块级作用域和 try/catch
块中的 catch
子句中,const
关键字可以声明一个不可变的变量。nullish coalescing operator
用于处理变量为空或未定义的情况,避免了 ||
运算符的一些问题。这些新的关键字可以帮助我们更好地处理变量声明和赋值,提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/656c6d25d2f5e1655d4cce84