Как массивы JavaScript реализованы?

Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_VARIABLE

Возможный сценарий

Я не могу найти, где мой код поступил не так. Вот моя полная ошибка:

Ошибка анализа: ошибка синтаксиса, неожиданный T_VARIABLE в строке x

Что я пытаюсь

$sql = 'SELECT * FROM dealer WHERE id="'$id.'"';

Ответ

Ошибка анализа: проблема с синтаксисом вашей программы, например, оставляя точку с запятой от конца инструкции или, как и в случае выше, пропускает оператор ..

Простыми словами это синтаксическая ошибка, означающая, что в вашем коде есть что-то, что помешает правильному анализу и поэтому работает.

Что вам нужно сделать, так это внимательно проверить строки, где ошибка для любых простых ошибок.

Это сообщение об ошибке означает, что в строке x файла интерпретатор PHP ожидал увидеть открытую круглую скобку, но вместо этого он встретил нечто, называемое T_VARIABLE. Эта вещь T_VARIABLE называется token. Это способ интерпретации PHP-интерпретатора различных фундаментальных частей программ. Когда интерпретатор читает в программе, он переводит то, что вы написали, в список токенов. Где бы вы ни разместили переменную в своей программе, в списке интерпретатора есть токен T_VARIABLE.

Хорошо читается: Список токенов парсера

So убедитесь, что вы включили хотя бы E_PARSE в своем php.ini. Ошибки анализа не должны существовать в производственных сценариях.

Я всегда рекомендовал добавить следующий оператор при кодировании:

error_reporting(E_ALL);

Отчет об ошибках PHP

Также неплохо использовать среду IDE, которая позволит вам знать ошибки разбора при наборе текста. Вы можете использовать:

  1. NetBeans (прекрасный мир красоты, бесплатное программное обеспечение) (лучший, на мой взгляд)
  2. PhpStorm (дядя Гордон любит это: P, платный план, содержит проприетарное и бесплатное программное обеспечение)
  3. Eclipse (красота и зверь, бесплатное программное обеспечение)

Вопросы, относящиеся:

29
задан Robert Harvey 26 May 2015 в 20:22
поделиться

5 ответов

Все в JavaScript - объект. В случае Array, length свойство возвращает размер области внутренней памяти для индексируемых объектов массива. Часть беспорядка может играть роль в этом [] работы оператора и для числовых и для аргументов строки. Для массива при использовании его с числовым индексом это возвращается/устанавливает ожидаемый индексируемый объект. При использовании его со строкой это возвращается/устанавливает именованное свойство на объекте массива - если строка не соответствует числовому значению, то это возвращает индексируемый объект. Это вызвано тем, что в JavaScript индексы массива принуждены к строкам неявным toString() вызов. Откровенно говоря, это - просто еще одна из тех вещей, которая заставляет Вас поцарапать голову и сказать "JavaScript, это, это - то, почему они смеются над Вами".

фактическое базовое представление может отличаться между браузерами (или оно не может). Я ни на что не полагался бы кроме интерфейса, который предоставляется при работе с ним.

можно узнать больше о массивах JavaScript в MDN.

16
ответ дан tvanfosson 28 November 2019 в 02:05
поделиться

Добавить к ответу tvanfosson: В ECMA-262 (3,0 спецификации, я верю), массивы просто определяются как имеющий это поведение для установки свойств (См. 15.4.5.1). Нет никакого общего механизма, лежащего в основе его (по крайней мере, на данный момент) - это, как это определяется, и как интерпретаторы JavaScript должны вести себя.

2
ответ дан Claudiu 28 November 2019 в 02:05
поделиться

Важно знать, что, когда Вы делаете sup['look'] = 4;, Вы не используете ассоциативный массив, а скорее изменяете свойства на объектном глотке. Это эквивалентно sup.look = 4;, так как можно динамично добавить свойства на объектах JavaScript в любое время. sup['length'] был бы для экземпляра производить 5 в Вашем первом примере.

2
ответ дан Rohit Suthar 28 November 2019 в 02:05
поделиться

Если Вы намереваетесь реализовать объекты с подобным массиву доступом, Массив, Mozilla dev центральная статья является большим ресурсом. К сожалению, я не знаю подробно детали реализации Массива, но существует много деталей в той статье.

1
ответ дан Gareth 28 November 2019 в 02:05
поделиться

Array объект наследовался caller, constructor, length , и name свойства от Function.prototype .

1
ответ дан Eugene Yokota 28 November 2019 в 02:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: