Я не могу сказать из вопроса, хотите ли вы вывести сообщение, если enable
- логическое значение (будь то true
или false
) (как я его первоначально читал) или только если это true
( так, как я прочитал его во второй раз) .
Если только для логических значений (true
или false
)
Если для true
или false
, то:
if (typeof enable === "boolean")
console.log(this.msg);
или
if (enable === true || enable === false)
console.log(this.msg);
или (но я думаю, что вы сказали, что вам не понравился этот):
if (Boolean(enable) === enable)
console.log(this.msg);
Live Пример:
function debug(msg, enable) {
this.msg = msg;
if (enable === true)
console.log(this.msg);
}
debug("one", true); // prints
debug("two", "random"); // doesn't, it's not boolean, even though "random" is truthy
Если только для true
Если вы хотите напечатать сообщение только для true
, просто используйте строгое равенство, поскольку вы хотите, чтобы false
также не печатало сообщение:
if (enable === true)
console.log(this.msg);
При ===
выражение будет ложным, если:
enable
не является логическим значением (поскольку для ===
требуется соответствие типов операндов) или
enable
равно false
(потому что хотя типы совпадают, значения не совпадают)
Live Пример:
function debug(msg, enable) {
this.msg = msg;
if (enable === true)
console.log(this.msg);
}
debug("one", true); // prints
debug("two", false); // doesn't, it's false
debug("three", "random"); // doesn't, it's not boolean, even though "random" is truthy