Есть ли способ получить значение по умолчанию x
здесь?
Нет, для таких вещей нет встроенной функции отражения, и в любом случае это совершенно невозможно, учитывая то, как параметры по умолчанию спроектированы в JavaScript.
Обратите внимание, что toString()
ing функция не будет работать, так как она сломается при значениях по умолчанию, которые не являются постоянными.
Конечно. Единственный способ узнать это — вызвать функцию, так как значения по умолчанию могут зависеть от вызова. Просто подумайте о
function(x, y=x) { … }
и попытайтесь получить разумное представление для значения по умолчанию y
s.
В других языках вы можете получить доступ к значениям по умолчанию либо потому, что они являются постоянными (оцениваются во время определения), либо их отражение позволяет вам разбивать выражения и оценивать их в контексте, в котором они были определены.
Напротив, JS оценивает выражения инициализатора параметров при каждом вызове функции (если требуется). параметры? подробнее. И эти выражения, как если бы они были частью тела функции, недоступны программно, так же как любые значения, на которые они ссылаются, скрыты в закрытой области действия функции.
Если у вас есть API-интерфейс отражения, который разрешает доступ к значениям закрытия (например, API отладки движка), вы также можете получить доступ к значениям по умолчанию.
Совершенно невозможно отличить function(x, y=x) {…}
от function(x) { var y=x; …}
по их общедоступным свойствам или по их поведению, единственный способ - .toString()
. И вы не хотите полагаться на это обычно.
person
Bergi
schedule
11.10.2015