Comments 6
Вредные советы
UFO just landed and posted this here
eval нового поколения.
Можно короче:
$scope.$eval('a + b')
Спешу заметить, что это несколько лучше, чем «настоящий» eval. При таком подходе явно указывается область видимости и не захватывается контекст вызывающей функции. Но, всё равно, зло.
В первом случае не обязательно брать «typeof» и сравнивать с «object» (кстати, а если функция?!). В конкретном случае достаточно
Выглядит он не так пугающе, по нему видно, что происходит, да и работает на порядок быстрее.
Второй сценарий — огромная зияющая дыра. Никогда! Никогда! Никогда не допускайте в клиентском коде возможность принимать код извне. Между сервером и клиентов всегда может быть «мужик посередине». Весь нужный код должен приходить исключительно по тегам <sсript>, хотя и это полностью не решает всех проблем.
Во всякого рода «Уберштука за 20 минут» или "… 30 строк кода" eval'ы и иже с ними допускаются, но только при том условии, что этот выхлоп никогда не попадёт в серьёзный код и не будет использоваться в продакшене.
В первом случае не обязательно брать «typeof» и сравнивать с «object» (кстати, а если функция?!). В конкретном случае достаточно
if (foo
&& foo.bar
&& foo.bar.baz)
return foo.bar.baz.name;
Выглядит он не так пугающе, по нему видно, что происходит, да и работает на порядок быстрее.
Второй сценарий — огромная зияющая дыра. Никогда! Никогда! Никогда не допускайте в клиентском коде возможность принимать код извне. Между сервером и клиентов всегда может быть «мужик посередине». Весь нужный код должен приходить исключительно по тегам <sсript>, хотя и это полностью не решает всех проблем.
Во всякого рода «Уберштука за 20 минут» или "… 30 строк кода" eval'ы и иже с ними допускаются, но только при том условии, что этот выхлоп никогда не попадёт в серьёзный код и не будет использоваться в продакшене.
Хорошее дополнение к статье.
Sign up to leave a comment.
AngularJs $parse hacks