Каково различие между “ключевым словом” и “зарезервированным словом”?

Вам не нужен jQuery.

var s = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = s.split(/~/);
var name = fields[0];
var street = fields[1];
51
задан Mathieu K. 15 March 2017 в 02:59
поделиться

6 ответов

Keywords have a special meaning in a language, and are part of the syntax.

Reserved words are words that cannot be used as identifiers (variables, functions, etc.), because they are reserved by the language.

In practice most keywords are reserved words and vice versa. But because they're two different things it may happen that a keyword is not a reserved word (e.g. a keyword only has meaning in a special context, and can therefore be used as an identifier), or a reserved word is not a keyword (e.g. because it is reserved for future use).

Update: Some examples as given by others that illustrate the distinction:

  • In Java, goto is a reserved word but not a keyword (as a consequence, you cannot use it at all)
  • Fortran has no reserved words, all keywords (if, then, etc.) can be used as identifiers
57
ответ дан 7 November 2019 в 10:12
поделиться

Просто чтобы показать, что это различие очень значимо:

Не во всех языках все ключевые слова зарезервированы. В Фортране это можно сделать так:

if if then then else else

В этом случае ключевые слова не зарезервированы, но в зависимости от контекста могут интерпретироваться компилятором как переменные.

17
ответ дан 7 November 2019 в 10:12
поделиться

Хорошим примером этого различия является «goto» в Java. Это не ключевое слово языка (т.е. это недействительный Java), но это зарезервированное слово.

Кажется, что разработчики Java говорят нам: «Мы не собираемся использовать 'goto', и ты тоже ".

8
ответ дан 7 November 2019 в 10:12
поделиться

Вики говорится: «Ключевое слово - это слово, которое является особенным только в определенных контекстах, но зарезервированное слово - это особое слово, которое не может использоваться в качестве определяемого пользователем имени».

http : //en.wikipedia.org/wiki/Reserved_word#Reserved_word_vs._keyword

5
ответ дан 7 November 2019 в 10:12
поделиться

На самом деле это будет во многом зависеть от контекста. Например, в стандарте ISO C ++ сказано, что такие вещи, как «if», «while», «int» и т. Д. Являются ключевыми словами , и фактически не используется термин зарезервированное слово , кроме одного случая в сноске, где, вероятно, имелось в виду что-то еще: -)

Стандартные лань определяют зарезервированных имен - например, все имена, начинающиеся с подчеркивания и заглавной буквы, являются зарезервированными именами.

0
ответ дан 7 November 2019 в 10:12
поделиться

Думаю, ключевое слово - это слово, используемое как "ключевое слово" (например, if, for, switch и т. Д.), А зарезервированное слово - это то, что вы не можете использовать в качестве имени переменной, потому что оно может стать ключевое слово в будущей версии языка.

1
ответ дан 7 November 2019 в 10:12
поделиться