Statement, Expression, ExpressionStatements. Отличие и корректный перевод

234
12 апреля 2017, 14:57

Столкнулся с понятиями Statement, Expression, ExpressionStatements в книге Douglas Crockford. JavaScript: The Good Parts.

Например, Esprima парсер не выделяет Statement, если я правильно понял, корректно его перевести как "директива, инструкция", но использует ExpressionStatement.

Укажите, пожалуйста, как они соотносятся между собой и как их корректно перевести?

Answer 1

Если обратиться к спецификации, можно найти определение данных понятий:

  1. Statement - общее название всех основных выражений, как можно увидеть, выражения бывают нескольких видов

    Statement[Yield, Return]:
        BlockStatement[?Yield, ?Return]
        VariableStatement[?Yield]
        EmptyStatement
        ExpressionStatement[?Yield]
        IfStatement[?Yield, ?Return]
        BreakableStatement[?Yield, ?Return]
        ContinueStatement[?Yield]
        BreakStatement[?Yield]
        [+Return]ReturnStatement[?Yield]
        WithStatement[?Yield, ?Return]
        LabelledStatement[?Yield, ?Return]
        ThrowStatement[?Yield]
        TryStatement[?Yield, ?Return]
        DebuggerStatement
    

    Как можно заметить ExpressionStatement просто один из видов Statement, вполне возможно именно поэтому указанный парсер не выделяет Statement отдельно.

  2. В свою очередь ExpressionStatement представляет из себя Expression, перед которым нет {, function, class, let [

    ExpressionStatement[Yield]:
        [lookahead ∉ { {, function, class, let [ }]Expression[In, ?Yield];
    
  3. И, наконец, Expression - почти любое выражение, которое можно вычислить и получить значение. Определяется оно, как один или несколько AssignmentExpression, разделенных запятыми. Которые в свою очередь могут быть: тернарным оператором, стрелочной функцией, yield выражением, либо выражением с применением операторов присваивания.

С переводом, все несколько сложнее. На сколько я знаю, общеупотребимого перевода нет. В википедии присутствует вариант Инстру́кция или опера́тор. Кроме этого есть обсуждение на соседнем сайте

READ ALSO
Как убрать ошибку JS в PHPMyAdmin?

Как убрать ошибку JS в PHPMyAdmin?

Установил новую версию PHPMyAdminВ целом все OK, но в консоли вылезает ошибка JS:

246
как уменьшить простой блок кода if else

как уменьшить простой блок кода if else

Есть страничка с высотой 4600 пикселей и есть блок кода которое при скролле плавно приближает элементов справа налево или наоборот, но код...

206
Как изменить title в html документе

Как изменить title в html документе

В чатах, когда приходит сообщение, с помощью очевидно JS меняют title - так мы видим, что пришло сообщениеПодскажите, как это сделать?

232
Javascript apply - кастомная реализация

Javascript apply - кастомная реализация

Есть абстрактная функция, которая на вход принимает параметр и потом что то делает с этим параметромХочу реализовать функцию так, чтобы на вход...

219