Для 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 }
Это все, можете ли вы сосчитать все зарезервированные ключевые слова? :) ваше здоровье!