Когда вы печатаете что-то в консоли браузера вы создавая javascript Program
(даже если он равен 3+2
, это еще программа). Программа представляет собой последовательность Statement
s и FunctionDeclaration
s, разделенную (возможно подразумеваемой) точкой с запятой. JS оценивает все утверждения и объявления в порядке, и результат всего Program
является последним непустым результатом. В то время как FunctionDeclaration
всегда дает пустое значение (undefined
), некоторые Statement
s могут возвращать непустые результаты. Они перечислены в разделе «Заявления» в стандарте (http://ecma-international.org/ecma-262/5.1/#sec-12), обратите внимание на такие вещи, как
Return (normal, V, empty) or Return (normal, empty, empty)
, где средняя часть обозначает возвращаемое значение оператора.
Примеры:
> var a=1; function x() { 3+1 }
undefined
это ничего не возвращает, потому что нижний var
заявление, ни Децл имеют значение.
> 3 + 2
5
Это возвращает 5
, поскольку выражения выражения имеют значения.
> function x() { 3 + 2 }
undefined
Это не определено, потому что FunctionDeclaration
s не имеют значения.
> var a = 10; while(a>3) a--; function x() {}
4
Это один возвращает 4
потому что while
имеет значение.
> var a = 10; if(a>3) a--
10
а также if
.
Обратите внимание, что, хотя большинство операторов JS имеют значения, невозможно получить или использовать эти значения в программе JS (кроме eval()
, которую консоль делает под капотом). Высказывания оцениваются, но их результаты теряются, и единственной реальной целью заявления является получение побочных эффектов. Это несколько странное поведение является результатом того, что Javascript является функциональным языком (где все имеет значение) с процедурным синтаксисом.Другими словами, семантически не будет никаких проблем, чтобы что-то вроде
return if(a > 10) 5 else 0
или
x = 5 + do { r = nextVal() } while(!used(r))
Единственная причина, почему это не работает произвольное синтаксический ограничение.
Что такое имя браузера? – Khamidulla
Что вы подразумеваете под "it did [work]"? Что он не выдал исключение или что он вернул «4»? –
независимо от того, что вы делаете, это вернет 13, а не 4 .., чтобы поддержать вас, вопрос plz сделать скрипку. –