Структура языка — набор элементарных правил, которые задают написание программы на JavaScript. Это самый нижний уровень языка, в нем определяются такие вещи как имена переменных, комментарии в тексте, отделение одной инструкции от другой и другие базовые принципы.
Сам HTML к регистру не чувствителен, поэтому при описании события величина символов значения не имеет. Приведенный фрагмент будет работать корректно <body onload="foo()">, так же, как и <body onLoad="foo()">, поскольку является частью кода HTML, а не JavaScript. Однако при смене имени на Foo(), появится ошибка, JavaScript не сможет обнаружить такую функцию в наличии.
a = 4 // тоже правильно
  b = 6
Слишком длинные аргументы, такие как текст, переносить на другую строку нельзя, иначе это будет воспринято, как еще одна строка кода и проведен ее анализ.
text = "Во избежании медицинских осложнений стул рекомендуется выбирать с мягким сидением."
В этом коде содержится ошибка, поскольку в первой строке отсутствует завершающая кавычка, а вторая строка начинается не с ключевого слова или идентификатора, и тоже содержит кавычку. Чтобы подобных недоразумений не возникало, учитывайте правило: одна строка — один код.
if(!text) alert("Не указан текст") // Надо же, пользователь забыл 
    текст указать
    else if(!name) alert("Не указано имя") // Еще свое имя позабыл
    else alert("Текст добавлен") // А вот теперь все в порядке
Для создания комментария, состоящего из нескольких строк, используются символы /* и */. Все что находится между ними пропускается.
function menu() {
    ...
    }
Таблица 1. Зарезервированные ключевые слова
| break | false | in | this | void | 
| continue | for | new | true | while | 
| delete | function | null | typeof | with | 
| else | if | return | var | 
В таблице 2 указаны слова, которые хотя и не являются зарезервированными, но использования их для задания идентификаторов следует избегать. Список представляет собой названия имен встроенных функций, переменных и типов данных, которые включены в JavaScript.
Таблица 2. Имена, которые не следует использовать для идентификаторов
| alert | escape | JavaPackage | onunload | setTimeout | 
| Anchor | eval | length | open | status | 
| Area | FileUpload | Link | opener | String | 
| Array | focus | Location | Option | Submit | 
| assign | Form | location | Packages | sun | 
| blur | Frame | Math | parent | taint | 
| Boolean | frames | MimeType | parseFloat | Text | 
| Button | Function | name | parseInt | Textarea | 
| Checkbox | getClass | navigate | Password | top | 
| clearTimeout | Hidden | Navigator | Plugin | toString | 
| close | History | navigator | prompt | unescape | 
| closed | history | netscape | prototype | untaint | 
| confirm | Image | Number | Radio | valueOf | 
| Date | isNaN | Object | ref | Window | 
| defaultStatus | java | onblur | Reset | window | 
| Document | JavaArray | onerror | scroll | |
| document | JavaClass | onfocus | Select | |
| Element | JavaObject | onload | self | 
Следует воздерживаться от использования этих идентификаторов, независимо от регистра их написания (заглавные или прописные символы).