default

В JavaScript ключевое слово default используется в двух случаях: внутри конструкции switch или с конструкцией export.

Синтаксис

В конструкции switch:

switch (expression) {
  case value1:
    // Выражение выполнится, когда значение expression соответствует value1
    [break;]
  default:
    // Выражение выполнится, когда ни одно из значений не будет соответствовать значению expression
    [break;]
}

С конструкцией export:

export default nameN 

Описание

Для получения дополнительной информации смотрите:

Примеры

Использование default в  switch

В следующем примере, если expr имеет значение  "Апельсины" или "Яблоки", то программа сопоставит это значение с "Апельсины" или с "Яблоки", а затем выполнит соответствующее выражение. В других случаях поможет ключевое слово default,  выполня связанное выражение.

switch (expr) {
  case 'Апельсины':
    console.log('Апельсины стоят $0.59 за фунт.');
    break;
  case 'Яблоки':
    console.log('Яблоки стоят $0.32 за фунт.');
    break;
  default:
    console.log(`Извините, у нас закончились ${expr}.`);
}

Использование default с export

При необходимости экспорта единственного значения или резервирования (fallback) значения для модуля, можно воспользоваться экспортом по-умолчанию: 

// модуль "my-module.js"
let cube = function cube(x) {
  return x * x * x;
};
export default cube;

Тогда, в другом файле JavaScript, становится возможным просто импортировать экспортируемое по-умолчанию значение:

// модуль "my-module.js"
import myFunction from 'my-module';
console.log(myFunction(3)); // 27

Спецификация

Спецификация Статус Комментарий
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'switch statement' в этой спецификации.
Стандарт
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Exports' в этой спецификации.
Стандарт
ECMAScript (ECMA-262)
Определение 'switch statement' в этой спецификации.
Живой стандарт
ECMAScript (ECMA-262)
Определение 'Exports' в этой спецификации.
Живой стандарт

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
default keyword in switchChrome Полная поддержка 1Edge Полная поддержка 12Firefox Полная поддержка 1IE Полная поддержка 4Opera Полная поддержка 4Safari Полная поддержка 1WebView Android Полная поддержка 1Chrome Android Полная поддержка 18Firefox Android Полная поддержка 4Opera Android Полная поддержка 10.1Safari iOS Полная поддержка 1Samsung Internet Android Полная поддержка 1.0nodejs Полная поддержка Да
default keyword with exportChrome Полная поддержка 61Edge Полная поддержка 16
Полная поддержка 16
Полная поддержка 15
Отключено
Отключено From version 15: this feature is behind the Experimental JavaScript Features preference.
Firefox Полная поддержка 60
Полная поддержка 60
Нет поддержки 54 — 60
Отключено
Отключено From version 54 until version 60 (exclusive): this feature is behind the dom.moduleScripts.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 47Safari Полная поддержка 10.1WebView Android Нет поддержки НетChrome Android Полная поддержка 61Firefox Android Полная поддержка 60
Полная поддержка 60
Нет поддержки 54 — 60
Отключено
Отключено From version 54 until version 60 (exclusive): this feature is behind the dom.moduleScripts.enabled preference. To change preferences in Firefox, visit about:config.
Opera Android Полная поддержка 44Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 8.0nodejs Полная поддержка 13.2.0
Замечания
Полная поддержка 13.2.0
Замечания
Замечания Modules must either have a filename ending in .mjs, or the nearest parent package.json file must contain "type": "module". See Node's ECMAScript Modules documentation for more details.
Полная поддержка 12.0.0
Замечания Отключено
Замечания Modules must either have a filename ending in .mjs, or the nearest parent package.json file must contain "type": "module". See Node's ECMAScript Modules documentation for more details.
Отключено From version 12.0.0: this feature is behind the --experimental-modules runtime flag.
Полная поддержка 8.5.0
Замечания Отключено
Замечания Module filenames must end with .mjs, not .js. See Node's ECMAScript Modules documentation for more details.
Отключено From version 8.5.0: this feature is behind the --experimental-modules runtime flag.

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

Смотрите также