Вам не нужно беспокоиться о том, что это не рекомендуется в будущем.Это плохая идея сейчас .
Что на самом деле происходит, так это: есть ссылка, использующая протокол javascript:
, который уважают браузеры.Это означает, что все, что следует за javascript:
, является JavaScript и должно выполняться интерпретатором JS.
Когда вы получаете href ссылки, вы получаете ее в виде строки, например, «javascript: clickme ()».Вы можете использовать eval
в строках для выполнения JavaScript.Теперь, вы могли бы подумать, что это потерпит неудачу (из-за протокола javascript:
в начале), но это не так, потому что JavaScript имеет метки , и это выглядит как метка, когда вы рассматриваете его какКод JavaScript.
Так что это работает, но это плохая идея.Он также запрещен (из-за eval
) в новом «строгом» режиме последней версии JavaScript, ECMAScript, 5-е издание.
В общем, когда мы думаем, что нам нужно использовать eval
для чего-то, это означает, что есть проблема с нашим кодом и что некоторый рефакторинг в порядке.Исключением из этого правила являются крайние крайние случаи, с которыми большинство из нас никогда не столкнется.В этом случае вместо того, чтобы атрибут href
содержал код, который мы хотим выполнить, он должен просто использовать код, который мы хотим выполнить.Ваш пример, например, имеет функцию clickMe
как единственное, что используется.Вместо eval
этого мы просто должны вызвать эту функцию напрямую.