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

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

Function, switch и for - все зарезервированные ключевые слова, и, как мы видим в примерах, их неправильное использование приведет к возникновению ошибки. .

Без лишних слов, давайте взглянем на список зарезервированных ключевых слов:

break - завершает цикл или конструкцию переключателя

for (let i = 0; i < 10; i++) {
  if (i === 5) {
    break;
  }
  console.log(i); // 0, 1, 2, 3, 4
}

case - это предложение, сравнивающее выражение из оператора switch

const expr = 5;
switch(expr) {
  case 4:
    console.log(4);
    break;
  case 5:
    console.log(expr); // will print 5
    break;
  default:
    console.log('default');
}

catch - перехватывает исключение в инструкции try

try {
 throw new Error('some error');
} catch (e) {
 console.log(e.message); // some error
}

class - объявляет класс (классы основаны на прототипном наследовании)

class Some {}
typeof Some // function

const - ключевое слово для объявления константы

const constant = 5;
constant = 6; // Uncaught TypeError: Assignment to constant variable

продолжить - пропускает текущий шаг в цикле.

for (let i = 0; i < 3; i++) {
  if (i === 1) {
    continue;
  }
  console.log(i); // 0, 2
}

отладчик - прерывает выполнение скрипта и включает режим отладки.

function debugMe() {
  debugger;
}

Вызов debugMe приведет к такому поведению в Chrome:

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

const expression = 1;
switch(expression) {
  case 2:
    console.log(2);
    break;
  default:
    console.log('default behavior'); // this will be called
}

delete - удаляет свойство из объекта.

const obj = {
  deleteMe: true
}
console.log(obj); // {deleteMe: true}
delete obj.deleteMe;
console.log(obj); // {}

do - используется в цикле do… while. Это заставляет цикл выполняться хотя бы один раз.

do {
  console.log('executed'); // will be printed once
} while (false);

else - используется с оператором if. Он будет выполняться, когда условие ложное.

if (false) {
  console.log('won\'t be called');
} else {
  console.log('will be called'); // called
}

export - экспортировать некоторую конструкцию, которая будет использоваться при вызове инструкции import.

const func = () => 5;
export default func;

extends - создает дочерний элемент другого класса.

class ChildClass extends ParentClass {}

finally - будет вызываться рядом с конструкцией try… catch независимо от того, было ли исключение перехвачено или создано

try {
 throw new Error('some error');
} catch (e) {
 console.log(e.message); // some error
} finally {
  console.log('finally is called'); // this will be called as well
}

for - создает цикл

for (let i = 0; i < 1; i++) {}

функция - определяет функцию

function someFunc() {}

if - выполняет истинное условие

if (true) {
 // do sth
}

import - импортирует экспортированную конструкцию.

const func = () => 5;
export default func;
import func from (...)

in - возвращает истину, если свойство существует в объекте.

const checkIn = {
  prop1: 'a property'
}
console.log('prop1' in checkIn); // true
console.log('prop2' in checkIn); // false

instanceof - проверяет экземпляр конструкции

function some() {}
console.log(some instanceof Function); // true
class SomeClass {}
const child = new SomeClass;
console.log(child instanceof SomeClass); // true

новый - создает экземпляр некоторой конструкции

class SomeClass {}
const child = new SomeClass;
console.log(child); // SomeClass {}

return - возвращает какое-то значение или прекращает выполнение функции

function returnVal() {
  return 'string';
}
console.log(returnVal()); // string

super - вызывает родительский метод внутри класса или объекта

class Main {
  someFunc() {
    console.log('in someFunc()');
  }
}
class SomeChild extends Main {
  extendedFunctionality() {
    // some new functionality
    super.someFunc();
  }
}
const el = new SomeChild;
el.extendedFunctionality(); // in someFunc()

switch - оценивает некоторое выражение и выполняет код на основе предложений case.

switch(expr) {
 // handle cases and default 
}

this - относится к контексту выполнения

const objContext = {
  someFunc() {
    console.log(this);
 }
}
console.log(objContext.someFunc()); // {someFunc: ƒ} --> execution context is someFunc function

throw - прекращает выполнение функции и вызывает исключение или ошибку.

throw new Error('err'); // Uncaught Error: err

try - используется, чтобы попробовать какой-то код, в основном должен использоваться с внешним кодом, который мы не контролируем

try {
  // try some code
} catch (err) {
  // handle error
|

typeof - возвращает тип операнда

const str = 'string'; // typeof str --> "string"
const num = 5; // typeof num --> "number"
const bool = false; // typeof bool --> "boolean"

var - используется для объявления переменной

var myVar = 'variable';

void - оценивает какое-то выражение, но значение не возвращается (вместо него возвращается undefined)

console.log(void 5); // undefined
console.log(void 'string'); // undefined
console.log(void true); // undefined

while - создает цикл, который будет работать, пока условие является истинным.

let j = 1;
while (j <= 4) {
  j++;
}
console.log(j); // 5

with - предоставляет объект по умолчанию для некоторого оператора

// assume Math object for the random function
with(Math) {
  console.log(random()); // 0.5289267443679495 
}

yield - приостанавливает / возобновляет работу генератора

function* yieldExample() {
  yield 2;
  console.log('text'); // will not be called, generator is suspended
}

Это все, можете ли вы сосчитать все зарезервированные ключевые слова? :) ваше здоровье!