這是Crockford的JavaScript: The Good Parts這裏真的需要JavaScript身份比較嗎?
var is_array = function (value) {
return Object.prototype.toString.apply(value) === '[object Array]';
};
請問這代碼工作過一樣好,如果他用了一個簡單的相等比較==
,而不是身份比較===
?
我對身份的理解是它允許你檢查一個值是否真的被設置爲特定的東西,而不僅僅是等價的東西。例如:
x == true
將評估爲true,如果x是1,或真,但
x === true
如果x是真實的,只會是真實的。
有沒有可能對上述is_array功能與任何==
或===
,而不是其他的工作嗎?
Crockford提倡總是使用'==='而不是'==',但是這個代碼應該*,可能*,和任何這些運算符一樣工作(或失敗)。 – c69
只有當你顯式**要啓用類型強制時才使用'=='。 (這實際上從來沒有,順便說一句) –