Присвоение примитивов JavaScript их названной эквивалентной переменной, например "константы" - программирование
Подтвердить что ты не робот

Присвоение примитивов JavaScript их названной эквивалентной переменной, например "константы"

Я смотрел исходный код qTip 2 и видел следующее:

// Munge the primitives - Paul Irish tip
var TRUE = true,
   FALSE = false,
    NULL = null;

Я не могу придумать причину, по которой вы должны это делать, и испытываете сильное чувство, что это будет просто поощрять неправильные привычки кодирования. Скажем, разработчик делает опечатку в состоянии Yoda, например if (TRUE = someCondition()), тогда TRUE вполне может в конечном итоге означать false, или вы можете в конечном итоге назначить someObject на NULL.

Я думаю, мне просто интересно, есть ли какое-то качество для этой практики, которое мне не хватает, или если это просто простой Bad Idea ™

4b9b3361

Ответ 1

Цель этого - просто улучшить компрессию, сам Пол Ирланд называет его "Анти-Шаблон".

Он описывает это как "Хорошо для сжатия и обхода цепочки объектов" в следующем представлении:

При обходе цепочки объектов мы не увидим улучшения в литературе как null, false, true, так как цепочка областей не проверена, они просто литералы.

В других идентификаторах как undefined или windows обход цепочки объектов действительно проверяется.

Paul Irish Anti-patterns slide 55

Ответ 2

Вы можете сделать это ради сжатия кода. Например, YUI Compressor не будет касаться true и false, но он может заменить все вхождения, например, true, с помощью A, сохраняя четыре символа на каждом вхождении. Например, перед сжатием:

    if (foo === null) {
        bar = true;
    }

После сжатия, если компрессор заменяет true на A и NULL на c:

if(foo===c){bar=a;}

В сравнении с этим после сжатия без "перебора примитивов":

if(foo===null){bar=true;}

Опасность плохого кодирования, которую вы вполне правильно цитируете в своем вопросе, может перевесить небольшую экономию дополнительного сжатия. Это зависит от того, насколько отчаянно вам нужно сохранить несколько десятков или, возможно, несколько сотен байт.

Лично я бы (почти) никогда этого не делал. Слишком опасно.

Ответ 3

Я считаю, что это рекомендуется для сжатия.

Эти сокращенные переменные будут сжиматься при запуске, что приведет к уменьшению количества файлов. Тем не менее, ваши отмеченные недостатки, безусловно, являются действительными точками!