Конструктор функций и вычисление

#jquery

#jquery

Вопрос:

Строка 576 jQuery 1.7rc1 является:

return (new Function( "return " data ))();

Теперь jshint жалуется на предупреждение

Конструктор функций — это eval .

Что означает эта ошибка? Почему люди из jQuery написали эту строку так, как она есть?

Комментарии:

1. Не существует набора правил, как писать код. JSHINT / JSLINT — это набор рекомендаций по правильному и правильному построению кода. Вы получаете сообщение об ошибке или это неинтересно? 🙂

2. Ну, код jQuery выдает предупреждение jshint. Я спрашиваю здесь из интереса.

Ответ №1:

Поскольку eval это зло, и Function конструктор использует eval его для создания нового Function , jshint это не нравится. jQuery использует его для анализа JSON для старых браузеров, которые изначально не поддерживаются JSON.parse() .