Как быстро и эффективно преобразовать «false» в «false»

JavaScript

Поднятые вопросы

Предыстория: значение ключа, прочитанное из файла cookie, равно «false», когда строка используется в качестве условия суждения, возникает проблема.

В мире JS 0, -0, null, "", false, undefined или NaN могут быть автоматически преобразованы в логическое значение false, тогда "false" строки не равно false, если судить ("false"), оно равно истинному.

Согласно объяснению W3C:

var myBoolean=new Boolean();
 
//下面的所有的代码行均会创建初始值为 false 的 Boolean 对象。
var myBoolean=new Boolean();
var myBoolean=new Boolean(0);
var myBoolean=new Boolean(null);
var myBoolean=new Boolean("");
var myBoolean=new Boolean(false);//不带单引号的是false
var myBoolean=new Boolean(NaN);

//下面的所有的代码行均会创初始值为 true 的 Boolean 对象:
var myBoolean=new Boolean(1);
var myBoolean=new Boolean(true);
var myBoolean=new Boolean("true");
var myBoolean=new Boolean("false");//带单引号的字符串false最终等于true
var myBoolean=new Boolean("Bill Gates");

Следовательно, если из файла cookie или фона возвращается значение «ложь» строки данных, его нельзя напрямую использовать в качестве условия оценки.

решение

  • преобразование тернарного оператора
let bool = result === 'false' ? false : true
  • показатель
let bool = {
    'true': true,
    'false': false
};
bool[ v ] !== undefined ? bool[ v ] : false;
  • JSON.parese

Это должен быть самый удобный и лаконичный способ

JSON.parse('false')  // false
JSON.parse('true') //true
  • Соответствие серверной части, не используйте строку «ture» или «false», вместо этого используйте 0,1.
let target = '0'
let bool = !!+target

[Направление обсуждения] Это лучшее решение, найденное на данный момент. Если есть лучший и более элегантный способ, опубликуйте его здесь.

использованная литература

адрес подключения