В javascript токен -
используется оператором вычитания. Поэтому, когда парсер встречает:
file-name
интерпретирует это как две переменные, file
и name
, с name
быть вычтена из file
.
Поскольку это выражение и выражения недействительны в объявлении аргумента, само объявление функции становится недействительным.
В то время как мы можем спроектировать язык такого, что -
символа не означает, вычитать, когда в объявлениях аргументов мы не можем использовать аргумент позже в коде, потому что нет никакого способа для языка различать file-name
и file - name
. Другие языки могут иметь синтаксис, чтобы иметь дело с этим, но javascript этого не делает (это похоже на свойства объекта с использованием синтаксиса object["file-name"]
, но не для локальных переменных).
Именно поэтому javascript запрещает символ -
в именах переменных и функций.
Ваше заключение не является исчерпывающим; ex: function x (ƒ) {} – dandavis
@ dandavis Да, это правильно. Что не так с этим? – thefourtheye
@dandavis Вы имеете в виду символы Юникода? – thefourtheye