Почему использование двоеточия в вызове функции foo: bar () возвращает ReferenceError вместо SyntaxError? - PullRequest
0 голосов
/ 28 сентября 2018
var foo = {
    bar: function() { return ""; }
}; 
foo:bar();

Приведенные выше результаты приводят к:

Uncaught ReferenceError: бар не определен

Использование в этом контексте console.log(foo:bar()); приводит к:

SyntaxError: отсутствует) после списка аргументов

В некоторых случаях объект / функция двоеточия объекта выполняет SyntaxError, но в этом случае это не так, почему это так?Я проверил это как в node.js, так и в нескольких браузерах, и это поведение соответствует, поэтому мне было любопытно, что не приведет ни к одной из ошибок в контексте "foo: bar".

Непомните, как еще я достиг SyntaxError, но это было как-то связано с вызовом функции из объекта с использованием :

1 Ответ

0 голосов
/ 28 сентября 2018

Я не уверен, что вы хотели достичь с помощью этого.

Имея это как "foo: bar", оно не имеет ничего общего с переменной foo.Вместо этого он объявляет метку с именем 'foo'.

Объявление метки внутри console.log приводит к SyntaxError, поскольку он прерывает синтаксический анализ состояния.

С другой стороныналичие его без console.log, как вы упомянули, имеет правильный синтаксис: он объявляет метку 'foo' и пытается вызвать функцию 'bar', которая не существует.Вот почему он показывает ReferenceError.

В любом случае Javascript ожидает точки (.) Для доступа к членам объекта: foo.bar()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...