Как вы уже написали, оба одинаково "безопасны".Проблема безопасности возникает, когда вы пытаетесь передать аргументы, потому что есть соблазн сделать что-то вроде этого:
setTimeout('func('+arg+')', 100);
, что может привести к внедрению кода.Кто-то будет использовать его, чтобы уничтожить вашу звезду смерти.Рано или поздно молодой джедай выяснит, как заставить ваше приложение сделать arg
равным 3.14); deathStar.selfDestruct(
, и следующее, что вы знаете, вам позвонит Император, чтобы объяснить вашу ошибку.
И это может быть не ты, кто совершил ошибку ... ты бы никогда не сделал бы ничего настолько глупого.Когда стажер реорганизует ваш код через 6 месяцев, и ему нужно добавить аргумент, вот тогда и возникает проблема.
Так что строковая форма считается плохой практикой.Это медленнее и потенциально менее безопасно.