Мои задачи по Javascript
Случайная задача
Список всех задач

Задача 17

'use strict';
let x;
x = 'string';
x = 2.41;
x = { x: x };
x = { x: x };
x = 2,41;
На какой строчке возникнет ошибка?
1
2
3
4
5
6
← Задача 16Задача 18 →
Пояснение По правилам JavaScript разделителем целой и дробной части десятичного числа является точка. JavaScript был созданом в США Бренданом Эйхом, а в англоязычных странах в качестве десятичного разделителя используется точка, хотя в большинстве остальных стран используется запятая.

Если вы подумали на седьмую строку, то там запятая является оператором "запятая". У этого оператора очень низкий приоритет (равен 1), он ниже даже оператора присвоения, т.е. символа "равно", у которого приоритет равен 3.
В седьмой строке x получил значение 2! А потом после присвоения значение вернулось число 41, которое никак не использовалось далее.

Кстати, вот такая запись выдаст ошибку:
let m = 5, 6;
А такая нет:
let m;
m = 5, 6; // m - 5
И такая нет:
let m = (5, 6); // m - 6

Почему при let m = 5, 6; возникает ошибка?
let - это не оператор, а инструкция. В ней запятые являются частью синтаксиса записи, а не операторами "запятая". Т.е. интерпретатор думает, что после запятой идёт имя ещё одной переменной, но имя не может начинаться с цифры и возникает ошибка.

Браузер на базе Chromium в этом случае пишет:
Uncaught SyntaxError: Unexpected number
А FireFox пишет:
Uncaught SyntaxError: missing variable name
Кстати, оператор запятая не является малополезным оператором. Его можно использовать, например, внутри тернарного оператора, чтобы запустить несколько функций:
// игрок потерял жизнь
noLives ? (saveHighScore(), gameOver()) : (lives--, continueGame());



Написать сообщение - отзыв, пожелание и т.п.