JavaScript中有三個等號(===)的操作符,是用來比較兩個值的類型和值是否相等的。它與他的兄弟運算符雙等號(==)的區別在于它比較嚴格、更精確,能夠避免因類型轉換而引起的隱蔽錯誤。
我們用一些例子來說明三等號運算符(===)的使用方式:
console.log(0 === ""); // false console.log(undefined === null); // false console.log(NaN === NaN); // false console.log("1" === 1); // false console.log("true" === true); // false console.log(" " === 0); // false console.log(true === 1); // false console.log(false === ""); // false console.log(null === undefined); // false console.log(1 === 1); // true console.log("123" === "123"); // true console.log(false === false); // true console.log(true === true); // true console.log(null === null); // true console.log(undefined === undefined); // true
由上述例子,我們可以看出,如果兩個操作數類型不相同,則 === 運算符會返回false,不管它們的值是否相等。例如,0不等于空字符串,false也不等于空字符串。
還要注意的是,NaN是一個特別的值,它與自身不等。因此,使用 === 運算符比較 NaN 時,結果是 false。
再看看下面的代碼,案例目的是將典型的方法化為面向對象:
過程式編程:
const carManufacturer = "Toyota"; const carModel = "Prius"; const carColor = "gray"; console.log("I have a " + carManufacturer + " " + carModel + " that is " + carColor + "."); console.log(capitalize(carManufacturer) + " " + capitalize(carModel)); function capitalize(s) { return s[0].toUpperCase() + s.slice(1); }
下面是重構后的代碼:
class Car { constructor(manufacturer, model, color) { this.manufacturer = manufacturer; this.model = model; this.color = color; } toString() { return `I have a ${this.manufacturer} ${this.model} that is ${this.color}.`; } fullname() { return `${capitalize(this.manufacturer)} ${capitalize(this.model)}`; } } const myCar = new Car("Toyota", "Prius", "gray"); console.log(myCar.toString()); console.log(myCar.fullname()); function capitalize(s) { return s[0].toUpperCase() + s.slice(1); }
在重構后的代碼中,我們把過程式編程轉化為面向對象編程。創建了一個 Car 類,其構造函數接受制造商、型號和顏色。并且我們把之前的打印語句轉換成了 toString() 方法,強調了 Car 對象的表示形式,并加上了 fullname() 方法打印汽車的制造商和型號。
本篇文章講述了 JavaScript 中三等號(===)的運算符,它能夠更加嚴格、更精確地比較兩個值的類型和值是否相等而避免隱蔽錯誤。