Ответ 1
Согласно статье Джона Ресига, если вы включите строгий режим в верхней части файла, это относится ко всему файлу / script. Итак, да, это означает, что он будет применяться в анонимной функции.
Вы также можете добавить его в функцию, и в этом случае она применима только к этой конкретной функции.
Отредактировано для добавления: здесь полная спецификация. Один из важных пунктов:
10.1.1 Строковый код режима
Синтаксическая единица программы ECMAScript может обрабатываться с использованием синтаксиса и семантики неограниченного или строгого режима. При обработке в строгом режиме три типа кода ECMAScript называются строгим глобальным кодом, строгим кодом eval и строгим кодом функции. Код интерпретируется как строгий код режима в следующих ситуациях:
- Глобальный код - это строгий глобальный код, если он начинается с директивы Prologue, содержащей директиву Use Strict (см. 14.1).
- Eval code - это строгий код eval, если он начинается с директивы Prologue, которая содержит директиву Use Strict или если вызов eval является прямым вызовом (см. 15.1.2.1.1) для функции eval, которая содержится в строгом режиме код.
- Функциональный код, являющийся частью FunctionDeclaration, FunctionExpression или accessor PropertyAssignment, является строгим функциональным кодом, если его FunctionDeclaration, FunctionExpression или PropertyAssignment содержится в коде строгого режима или если код функции начинается с директивы Prologue, которая содержит строку Use Strict Директива.
- Код функции, который поставляется в качестве последнего аргумента встроенному конструктору функций, является строгим кодом функции, если последний аргумент представляет собой строку, которая при обработке как FunctionBody начинается с директивного пролога, содержащего директиву Use Strict.