📜  ES6 |布尔值(1)

📅  最后修改于: 2023-12-03 15:30:38.260000             🧑  作者: Mango

ES6 | 布尔值

在ES6之前,布尔值只有truefalse两种取值,但是在ES6中,我们可以使用Symbol类型来创建新的布尔值。

创建布尔值

我们可以使用Symbol方法创建新的布尔值,如下所示:

const myTrue = Symbol('true');
const myFalse = Symbol('false');

上述代码会分别创建名为myTruemyFalse的布尔值。需要注意的是,对于每个不同的参数,Symbol方法都会创建一个新的符号。因此,即使两个符号的参数相同,它们也是不同的。

比较符号

在ES6中,我们可以使用Object.is()方法比较符号。如下所示:

const myTrue = Symbol('true');
const myOtherTrue = Symbol('true');
const myFalse = Symbol('false');
console.log(Object.is(myTrue, myOtherTrue)); // false
console.log(Object.is(myTrue, myTrue)); // true
console.log(Object.is(myTrue, myFalse)); // false

上述代码中,我们首先定义了两个名为myTrue的符号,并将它们都命名为true。然后,我们定义了一个名为myFalse的符号,并将其命名为false

最后,我们使用Object.is()方法来比较这些符号。注意,使用相同的参数创建的两个符号是不同的。

使用符号作为属性名

在ES6中,我们可以使用符号作为对象的属性名。如下所示:

const myObj = {
  [Symbol('myProperty')]: 'myValue'
};
console.log(myObj[Symbol('myProperty')]); // undefined
console.log(myObj[Object.getOwnPropertySymbols(myObj)[0]]); // myValue

上述代码中,我们定义了一个名为myObj的对象,并为其添加一个名为myProperty的属性。但是,我们使用的不是字符串,而是符号。因此,在访问该对象的属性时,我们需要使用相应的符号,而不是字符串。需要注意的是,通过Object.getOwnPropertySymbols()方法,我们可以获取对象的所有符号属性的数组,然后使用该数组索引来获取符号属性的值。

总结

ES6引入了符号类型,使我们能够创建新的布尔类型,并使用符号作为对象的属性名。这些功能在某些情况下可能非常有用,因此学习符号类型是很重要的。