Назначение примитивов JavaScript их именованным эквивалентным переменным, таким как «константы» - PullRequest
17 голосов
/ 05 января 2012

Я искал исходный код для qTip 2 и увидел следующее:

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

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

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

Ответы [ 3 ]

16 голосов
/ 05 января 2012

Цель всего этого - улучшить сжатие, сам Пол Айриш называет это «анти-паттерном».

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

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

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

Paul Irish Anti-patterns slide 55

4 голосов
/ 05 января 2012

Вы можете сделать это ради сжатия кода.Например, 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;}

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

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

2 голосов
/ 05 января 2012

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

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

...