Будучи ребенком, который любит набирать код вручную, я считаю, что код следует набирать самому, чтобы лучше запомнить его наизусть, поэтому сегодня я представлю возможности ES6 ~ ES12. Если у вас есть «слепые пятна» при использовании ES или вы мало что знаете о новых функциях , я считаю, что эта статья сможет вам очень помочь ~
Чтобы лучше понять, мы объясним это в режиме регистра , поэтому чтобы лучше понять, и в то же время корпус также поддерживает отладку в режиме разработчика, я надеюсь, что вы сможете это поддержать ~
ECMAScript — это язык программирования сценариев, стандартизированный Ecma International (ранее Европейской ассоциацией производителей компьютеров) через ECMA -262 . Также можно сказать, что
в мире программистов в качестве стандарта существуют только две версии JavaScript: ES5
и ES6
. Говорят, что ES6 фактически был выпущен в 2015 году, что также является временем, когда официально началась эра большого фронтенда. То есть в качестве границы используется 2015 год, до 2015 года он назывался ES5
, а после 2016 года — ES6
Информацию о возможностях ES6
можно прочитать в разделе «Введение в стандарты ES6»
Учитель Жуань Ифэн.
Разница между let, const и var:
Кроме того, когда объект объявляется с помощью const
, свойства объекта могут быть изменены, поскольку: obj, объявленный const, сохраняет только его ссылочный адрес
Пока адрес остается неизменным, ошибки
...
для представления всех оставшихсяundefined
,пусть [ а, б, в] = [1, 2, 3] console.log(a, b, c) // 1 2 3 пусть [a, , c] = [1, 2, 3] console.log(a, , c) // 1 3 пусть [a, b, ...c] = [1, 2, 3, 4, 5] console.log(a, b, c) // 1 2 [3, 4, 5] пусть [a, b, ...c] = [1] console.log(a, b, c) // 1 неопределенное [] пусть [a = 1, b = a] = [] const.log(a, b) // 1 1 пусть [a = 1, b = a] = [2] const.log(a, b) // 2 2
undefined
:
,other Эквивалент псевдонимаlet { a, b } = { a: 1, b: 2 }; console.log(а, б); // 1 2; пусть {а} = {б: 2}; console.log(а); // не определено пусть { a, b = 2 } = { a: 1 }; console.log(а, б); // 1 2; пусть {а: б = 2} = {а: 1}; console.log(a); // Переменная a не существует console.log(b); // 1
length
. , представляющий числоlet [a, b, c, d, e] = "привет" console.log(a, b, c, d, e) // привет let { length } = "привет" console.log(length) // 5
let { toString: с} = 123; console.log(s === Number.prototype.toString) // true пусть {toString: s} = true; console.log(s === Boolean.prototype.toString) // истинная
let arr = [[1,2], [3, 4]] пусть res = arr.map([a, b] => a + b) console.log(res) // [3, 7] пусть arr = [1, не определено, 2] let res = arr.map((a = 'test') => a); console.log(res) // [1, 'тест', 2] пусть func = ({x, y} = {x: 0, y: 0}) => { вернуть [х, у] } console.log(func(1, 2)) // [не определено, не определено] console.log(func()) // [0, 0] console.log(func({})) // [не определено, не определено] console.log(func({x: 1})) // [1, не определено] let func = ({x=0, y=0}) => { вернуть [х, у] } console.log(func({x:1,y:2})) // [1, 2] console.log(func()) // ошибка console.log(func({})) // [0, 0] console.log(func({x: 1})) // [1, 0]
на самом деле очень сложный для понимания вопрос. Если кто-то может полностью освоить его, это действительно очень мощно. Давайте упростим его. здесь Прежде всего,
он разделен на два стиля: JS分格
и perl 分格
: RegExp()
let re = new RegExp('a'); //Находим, есть ли в строке. let re = new RegExp('a', 'i'); //Первый — это объект поиска, второй — опция
perl style:/rule/option, за которой может следовать несколько символов, независимо от порядка.
let re = /a/; //Узнаем, есть ли в строке let re = /a/i;//Первый — это объект, который нужно искать, второй — опция.
Здесь мы представляем онлайн-тест регулярных выражений (с общими регулярными выражениями):
大括号包含
символы Юникода//Юникод console.log("a", "u0061"); // аа console.log("d", "u{4E25}"); // строго let str = 'Domesy'); //codePointAt() console.log(str.codePointAt(0)) // 68 //String.fromCharCode() console.log(String.fromCharCode(68)) // D //Строка.raw() console.log(String.raw`Hin${1 + 2}` // Приветn3); console.log(`Приветn${1 + 2}` // Привет 3; let str = 'Домашний' //начинаетсяс() console.log(str.startsWith("D")) // true console.log(str.startsWith("s")) // false //кончаетсяс() console.log(str.endsWith("y")) // true console.log(str.endsWith("s")) // false //repeat(): переданный параметр будет автоматически округлен в большую сторону. Если это строка, он будет преобразован в число console.log(str.repeat(2)) // DomesyDomesy. console.log(str.repeat(2.9)) // DomesyDomesy // Обход: for-of for(пусть код str){ console.log(code) // Возвращаем Domesy один раз } //включает() console.log(str.includes("s")) // true console.log(str.includes("a")) // ложь // начало обрезки() const string = «Привет, мир!»; console.log(string.trimStart()); // «Привет, мир!» console.log(string.trimLeft()); // «Привет, мир!» // обрезкаКонца() const string = «Привет, мир!»; console.log(string.trimEnd()); // "Привет, мир!" console.log(string.trimRight()); // «Привет, мир!»
let str = `Dome си` console.log(str) //Автоматически переносит строки//Купол //
const str = { название: 'Маленький Дуду', информация: «Всем привет» } console.log(`${str.info}, я `${str.name}`) // Привет всем, я Сяо Дуду
. 1, 2, 3, 4, 5] //Массив.of() пусть arr1 = Array.of(1, 2, 3); console.log(arr1) // [1, 2, 3] //copyWithin(): три параметра (цель, начало = 0, конец = this.length) // цель: позиция цели // начало: начальная позиция, которая может быть опущена и может быть отрицательным числом. // end: конечная позиция, может быть опущена, может быть отрицательным числом, фактическая позиция — end-1. console.log(arr.copyWithin(0, 3, 5)) // [4, 5, 3, 4, 5] //находить() console.log(arr.find((item) => item > 3 )) // 4 //найтиИндекс() console.log(arr.findIndex((item) => item > 3 )) // 3 //ключи() for (пусть индекс arr.keys()) { console.log(index); // Возвращаем 0 1 2 3 4 за раз } // ценности() for (пусть индекс arr.values()) { console.log(index); // Возвращаем 1 2 3 4 5 за раз } // записи() for (пусть индекс arr.entries()) { console.log(index); // Возвращаем [0, 1] [1, 2] [2, 3] [3, 4] [4, 5] один раз } пусть arr = [1, 2, 3, 4, 5] // Array.from(): Обход может быть псевдомассивом, таким как String, Set структура, Node node let arr1 = Array.from([1, 3, 5], (item) => { вернуть товар * 2; }) console.log(arr1) // [2, 6, 10] // fill(): три параметра (цель, начало = 0, конец = this.length) // цель: позиция цели // начало: начальная позиция, которая может быть опущена и может быть отрицательным числом. // end: конечная позиция, может быть опущена, может быть отрицательным числом, фактическая позиция — end-1. console.log(arr.fill(7)) // [7, 7, 7, 7, 7] console.log(arr.fill(7, 1, 3)) // [1, 7, 7, 4, 5] пусть arr = [1, 2, 3, 4] //включает() console.log(arr.includes(3)) // правда console.log([1, 2, NaN].includes(NaN)); // true
// Его функция — расширить массив let arr = [3, 4, 5] console.log(...arr) // 3 4 5 пусть arr1 = [1, 2, ...arr] console.log(...arr1) // 1 2 3 4 5
for-in
//Object.is() console.log(Object.is('abc', 'abc')) // true console.log(Object.is([], [])) // ложь //Обход: for-in let obj = { name: 'Domesy', value: 'React' } for(введите ключ в obj){ console.log(key); // Возвращаем значение имени атрибута по очереди console.log(obj[key]); // Возвращаем значения атрибутов по порядку Domesy React } //Объект.ключи() console.log(Object.keys(obj)) // ['имя', 'значение'] //Объект.назначить() константная цель = {а: 1, б: 2}; константный источник = {б: 4, с: 5}; const result = Object.assign(цель, источник) console.log(result) // {a: 1, b: 4, c: 5} console.log(target) // {a: 1, b: 4, c: 5}
let a = 1; пусть б = 2; пусть obj = { a, b } console.log(obj) // { a: 1, b: 2 } пусть метод = { привет() { console.log('привет') } } console.log(method.hello()) // выражение атрибута приветствия
let a = "b" пусть объект = { [а]: «с» }console.log(obj) //
{b : "c"}...
// Его функция — расширение массива let { a, b , ...c } = { а: 1, б: 2, в: 3, д: 4}; console.log(c) // {c: 3, d: 4} пусть obj1 = { c: 3 } пусть obj = { a: 1, b: 2, ...obj1} console.log(obj) // { a: 1, b: 2, c: 3}
0b
или 0B
, что указывает на двоично-00
или 0O
, что указывает на двоичный код正数为1
,负数为-1
,正零0
,负零-0
, NaN
parseInt
parseFloat
//Двоичный файл console.log(0b101) // 5 console.log(0o151) //105 //Число.isFinite() console.log(Number.isFinite(7)); // правда console.log(Number.isFinite(истина)); // ложь //Число.isNaN() console.log(Number.isNaN(NaN)); // правда console.log(Number.isNaN("истина" / 0)); // правда console.log(Number.isNaN(истина)); // ложь //Число.isЦелое() console.log(Number.isInteger(17)); // правда console.log(Number.isInteger(17.58)); // ложь //Number.isSafeInteger() console.log(Number.isSafeInteger(3)); // правда console.log(Number.isSafeInteger(3.0)); // правда console.log(Number.isSafeInteger("3")); // ложь console.log(Number.isSafeInteger(3.1)); // ложь //Математика.trunc() console.log(Math.trunc(13.71)); // 13 console.log(Math.trunc(0)); // 0 console.log(Math.trunc(истина)); // 1 console.log(Math.trunc(false)); // 0 //Математика.sign() console.log(Math.sign(3)); // 1 console.log(Math.sign(-3)); // -1; console.log(Math.sign(0)); // 0 console.log(Math.sign(-0)); // -0); console.log(Math.sign(NaN)); // NaN; console.log(Math.sign(true)); // 1 console.log(Math.sign(false)); // 0 //Математика.abrt() console.log(Math.cbrt(8)); // 2 //Число.parseInt() console.log(Number.parseInt("6.71")); // 6 console.log(parseInt("6.71")); // 6 //Number.parseFloat() console.log(Number.parseFloat("6.71@")); // 6.71 console.log(parseFloat("6.71@")); // 6.71
//По умолчанию параметру присваивается определенное значение. функция fun(x, y = x){ консоль.log(х, у) } функция fun1(c, y = x){ console.log(c, x, y) } веселье(2); //2 2; fun1(1); //1 1 1
function fun(...arg){ console.log(arg) // [1, 2, 3, 4] }
fun(1, 2, 3, 4)
let стрелка = (v) => v + 2 console.log(arrow(1)) // 3
Разница между стрелочными функциями и обычными функциями.
Set — это новая структура данных в ES6, которая похожа на массив. но значение члена уникально и нет повторяющихся
объявлений значений: const set = new Set()
Атрибуты:
Метод:
отдельно. Примечание.
iterator
. В порядке вставкиlet list = new Set() //добавлять() список.добавить("1") список.добавить(1) консоль(список) // Set(2) {1, "1"} //размер консоль(список.размер) // 2 //удалить() список.delete("1") консоль(список) // Установить(1) {1} //имеет() list.has(1) // правда list.has(3) // ложь //прозрачный() список.очистить() консоль(список) // Set(0) {} let arr = [{id: 1}, {id: 2}, {id: 3}] let list = новый набор (arr) //ключи() for (пусть ключ list.keys()) { console.log(key); // Распечатываем это: {id: 1} {id: 2} {id: 3} } //ценности() for (пусть ключ list.values()) { console.log(key); // Распечатываем это: {id: 1} {id: 2} {id: 3} } //записи() for (пусть данные list.entries()) { console.log(data); // Распечатываем это: [{id: 1},{id: 1}] [{id: 2},{id: 2}] [{id: 3},{id: 3 } ] } //длякаждого list.forEach((item) => { console.log(item)//Распечатайте это: {id: 1} {id: 2} {id: 3} });
Применение:
new Set
не может удалять объекты. неопределенное, ноль, ноль, NaN, NaN, 'NaN', 0, 0, 'a', 'a']; console.log([...новый набор(arr)]) //или console.log(Array.from(new Set(arr))) // [1, 'истина', правда, 15, ложь, неопределенное, ноль, NaN, 'NaN', 0, 'a']
let a = new Set([1, 2 , 3]) пусть b = новый набор ([2, 3, 4]) //Union console.log(new Set([...a, ...b])) // Set(4) {1, 2, 3, 4} //Пересечение console.log(new Set([...a].filter(v => b.has(v)))) // Set(2) {2, 3}//Разница установлена new Set([...a].filter(v => !b.has(v))) //
Set(1) {1}
let set = new Set([1,2, 3]) console.log(new Set([...set].map(v => v * 2))) // Set(3) {2, 4, 6}Определение
: та же структура, что и Set, но член значения могут
быть объявлены только для объекта: const set = new WeakSet()
метод WeakSet():
Примечание.
Индекс рекомендаций
Карта — это новая структура данных в ES6, которая представляет собой аналогичный объект. ключ — это объявление значения любого типа
: const map = new Map()
Атрибуты Map():
Метод:
Специальное примечание:
let map = new Map() //набор() map.set('а', 1) map.set('b', 2) console.log(map) // Map(2) {'a' => 1, 'b' => 2} //получать map.get("а") // 1 //размер console.log(map.size) // 2 //удалить() map.delete("a") // правда console.log(map) // Map(1) {'b' => 2} //имеет() map.has('b') // правда map.has(1) // ложь //прозрачный() карта.очистить() console.log(карта) // Карта(0) {} let arr = [["a", 1], ["b", 2], ["c", 3]] пусть карта = новая карта (обр.) //ключи() for (let key of map.keys()) { console.log(key); // Распечатаем это: abc } //ценности() for (пусть значение map.values()) { console.log(value); // Распечатаем это: 1 2 3 } //записи() for (пусть данные map.entries()) { console.log(data); // Распечатываем это: ["a", 1] ["b", 2] ["c", 3] } //длякаждого map.forEach((item) => { console.log(item)//Распечатайте это: 1 2 3 });Определение
: и структура карты, но значения членов могут
быть объявлены только для объектов: const set = new WeakMap()
метод:
Символ — это примитивный тип данных, представленный в ES6, который представляет独一无二
Объявление
: const sy = Stmbol()
Параметры: строка (необязательно).
Метод:
Symbol值
описанное параметрами. этот параметр существует, верните исходное Symbol值
(сначала выполните поиск, а затем создайте, зарегистрировано в глобальной среде).Symbol值
(может быть возвращен только key
Symbol.for()
).Symbol值
используемых в качестве имен свойств в объекте// Объявить let a = Symbol(); пусть b = Символ(); console.log(a === b // ложь); //Символ.для() let c = Symbol.for("domesy"); let d = Symbol.for("domesy"); console.log(c === d // true); //Символ.keyFor() const e = Symbol.for("1"); console.log(Symbol.keyFor(e)); // 1 //Символ.описание пусть символ = Символ("эс"); console.log(symbol.description); //es console.log(Symbol("es") === Символ("es")); // false console.log(symbol === символ // true); console.log(symbol.description === "es"); // true
Прокси используется для изменения поведения определенных операций по умолчанию, что эквивалентно внесению изменений на уровне языка, поэтому это своего рода «мета». программирование"), то есть программирование на языке программирования
можно понимать именно так. Прокси — это уровень拦截
установленный перед целевым объектом. Внешний мир должен пройти через этот уровень перехвата, если хочет получить к нему доступ. Следовательно, предусмотрен механизм фильтрации и фильтрации доступа из внешнего мира.
Здесь прокси можно понимать代理器
объявление прокси: const proxy = new Proxy(target, handler)
метод перехвата:
let obj = { имя: 'домашний', время: '27.01.2022', значение: 1 } пусть данные = новый прокси (obj, { //получать() получить (цель, ключ) { return target[key].replace("2022", '2015') }, //набор() set(цель, ключ, значение) { если (ключ === "имя") { возврат (цель [ключ] = значение); } еще { вернуть цель [ключ]; } }, // имеет() имеет (цель, ключ) { если (ключ === "имя") { вернуть цель [ключ]; } еще { вернуть ложь; } }, //удалитьсвойство() deleteProperty(цель, ключ) { если (key.indexOf("_") > -1) { удалить цель[ключ]; вернуть истину; } еще { вернуть цель [ключ]; } }, // собственныеКлючи() ownKeys (цель) { return Object.keys(target).filter((item) => item != "time"); }, }) console.log(data.time) // 27.01.2015 данные.время = '2020' data.name = 'Реагировать' console.log(data) //Прокси {имя: 'React', время: '2022-01-27', значение: 1} //Перехват имеет() console.log("имя" в данных) // true console.log("время" в данных) // false // Удалить deleteProperty() удалить данные.время // правда; // Обходим ownKeys() console.log(Object.keys(data)); //['имя', 'значение'] //применять() пусть sum = (...args) => { пусть число = 0; args.forEach((item) => { число += элемент; }); вернуть число; }; сумма = новый прокси(сумма, { применить (цель, ctx, args) { return target(...args) * 2; }, }); console.log(сумма(1, 2)); // 6 console.log(sum.call(null, 1, 2, 3)); // 12 console.log(sum.apply(null, [1, 2, 3])); // 12 //конструктор() пусть Пользователь = класс { конструктор(имя) { это.имя = имя; } } Пользователь = новый прокси(Пользователь, { конструкция (цель, аргументы, newTarget) { вернуть новую цель(...args); }, }); console.log(new User("domesy")); // User {name: 'domesy'}
Reflect похож на Proxy, за исключением того, что он сохраняет поведение Object
по умолчанию и
Reflect
.и методы Proxy соответствуют один в один, поэтому мы не будем вводить их здесь.
: абстракция класса вещей с общими характеристиками (синтаксис конструктора),
класса Parent {. конструктор(имя = 'es6'){ это.имя = имя } } let data = новый родитель('domesy') console.log(data) // Parent { name: 'domesy'}
класс Parent { конструктор(имя = 'es6'){ это.имя = имя } } // Обычный класс наследования Child расширяет Parent {} console.log(new Child()) // Дочерний элемент { name: 'es6'} // Передача параметров class Child расширяет Parent { конструктор(имя = "ребенок") { супер(имя); this.type = "ребенок"; } } console.log(new Child('domesy')) // Child { name: 'domesy', type: 'child'}Два метода
класс метода Parent { конструктор(имя = 'es6'){ это.имя = имя } // геттер получить getName() { вернуть 'sy' + this.name } // установщик установить setName(значение){ это.имя = значение } } пусть данные = новый родитель() console.log(data.getName) // syes6 data.setName = 'домашний' console.log(data.getName) // домашний
class Parent { статический getName = (имя) => { вернуть `Привет! ${имя}` } } console.log(Parent.getName('domesy')) // Привет!класс
Domesy
Parent {} Родитель.тип = "тест"; console.log(Parent.type); //тестовое
Promise
решить проблему «ада обратных вызовов». Оно может сделать обработку асинхронных операций очень элегантной.
Promise
может поддерживать несколько одновременных запросов и получать данные в одновременных запросах. Это Promise
может решить асинхронную проблему. Само по себе Promise
нельзя назвать асинхронным
определением: Статус объекта, содержащий результаты асинхронной операции
:
. Примечание.
//Нормальное определение let ajax = ( обратный вызов) => { console.log('≈') setTimeout(() => { обратный вызов && callback.call(); }, 1000) } аякс(() => { console.log('тайм-аут') }) // Сначала он будет напечатан для начала выполнения, затем через 1 с будет напечатан тайм-аут. //Обещать пусть ajax = () => { console.log("Начать выполнение"); вернуть новое обещание((разрешить, отклонить) => { setTimeout(() => { решать(); }, 1000); }); }; ajax().then(() => { console.log("Тайм-аут"); }); // Сначала он будет напечатан для начала выполнения, затем через 1 с будет напечатан тайм-аут. //затем() пусть ajax = () => { console.log("Начать выполнение"); вернуть новое обещание((разрешить, отклонить) => { setTimeout(() => { решать(); }, 1000); }); }; аякс() .then(() => { вернуть новое обещание((разрешить, отклонить) => { setTimeout(() => { решать(); }, 2000); }); }) .then(() => { console.log("тайм-аут") }) // Сначала он будет введен для начала выполнения, затем будет введен таймаут через 3 секунды (1+2) // ловить() пусть ajax = (num) => { console.log("Начать выполнение"); вернуть новое обещание((разрешить, отклонить) => { если (число > 5) { решать(); } еще { throw new Error("Произошла ошибка"); } }); }; аякс(6) .then(функция () { console.log("timeout"); // Сначала начнется выполнение, затем через 1 с будет напечатан таймаут }) .catch(функция (ошибка) { console.log("поймать", ошибка); }); аякс(3) .then(функция () { console.log("Тайм-аут"); }) .catch(функция (ошибка) { console.log("catch"); // Сначала начнем выполнение, а затем перехватим через 1 с. });
. вернуть новое обещание (Resolve, dresect) => { let img = document.createElement ("img"); img.src = src; img.onload = function () { Resolve (IMG); }; img.onerror = function (err) { отклонить (err); }; }); } const showimgs = (imgs) => { imgs.foreach ((img) => { document.body.appendchild (img); }) } Обещание. Все ([[[[[[[[[[[[[[[[[[[[[[[[ LoadImg ("https://ss0.baidu.com/7po3dsag_xi4khgko9wtanf6hhy/zhidao/pic/item/71cf3bc79f3df8dcc65551159cd11728b46102889.jpg") LoadImg ("https://ss0.baidu.com/7po3dsag_xi4khgko9wtanf6hhy/zhidao/pic/item/71cf3bc79f3df8dcc65551159cd11728b46102889.jpg") LoadImg ("https://ss0.baidu.com/7po3dsag_xi4khgko9wtanf6hhy/zhidao/pic/item/71cf3bc79f3df8dcc65551159cd11728b46102889.jpg") ]. Тогда (
Showimgs
{ вернуть новое обещание (Resolve, dresect) => { let img = document.createElement ("img"); img.src = src; img.onload = function () { Resolve (IMG); }; img.onerror = function (err) { отклонить (err); }; }); } const showimgs = (imgs) => { let p = document.createElement ("p"); P.AppendChild (IMG); document.body.appendchild (p); } Обещание. LoadImg ("https://ss0.baidu.com/7po3dsag_xi4khgko9wtanf6hhy/zhidao/pic/item/71cf3bc79f3df8dcc65551159cd11728b46102889.jpg") LoadImg ("https://ss0.baidu.com/7po3dsag_xi4khgko9wtanf6hhy/zhidao/pic/item/71cf3bc79f3df8dcc65551159cd11728b46102889.jpg") LoadImg ("https://ss0.baidu.com/7po3dsag_xi4khgko9wtanf6hhy/zhidao/pic/item/71cf3bc79f3df8dcc65551159cd11728b46102889.jpg") ]. Затем (
,
функция, которую можно использовать для управления итератором , также является асинхронным программным решением, которое инкапсулирует несколько внутренних состояний
done
value
value
объект done
恢复
выполнения. уступить "A"; урожай "B"; вернуть "c" } let Generator = data (); console.log (Generator.next ()) // {value: 'a', dode: false} console.log (Generator.next ()) // {value: 'b', Dode: false} console.log (Generator.next ()) // {value: 'c', dode: true} console.log (generator.next ()) // {value: undefined, ded: true}
итератор - это интерфейс, который обеспечивает единый механизм доступа для различных структур данных. Пока любая структура данных развертывает интерфейс итератора, она может завершить операцию обхода (то есть обрабатывать все члены структуры данных в последовательности).
Функции итератора:
Примечание:
数组
Map结构
Set
某些类似数组的对象
Map结构
.// в основном используйте lem arr = ["hello", "world"]; let Map = arr [symbol.iterator] (); console.log (map.next ()); console.log (map.next ()); console.log (map.next ()); // для петли пусть arr = ["hello", "world"]; для (let value of arr) { Console.log (значение); } // Обработка объекта пусть obj = { Начало: [1, 5, 2], Конец: [7, 9, 6], [Символ.итератор](){ Пусть индекс = 0; Пусть arr = this.start.concat (this.end) возвращаться { следующий(){ if (index <arr.length) { возвращаться { значение: arr [index ++], Сделано: ложь } }еще{ возвращаться { значение: arr [index ++], сделано: правда } } } } } } для (пусть ключ OBJ) { Console.log (ключ); }
для
core-decorators
@
изменения поведения класса.target.name = "domesy" } @имя Класс Тест {}Console.log (test.name) //
Domesy
В первые годы это был общий метод для использования немедленных функций выполнения для достижения
модуляризации Использование модуляризации:
:
export default Index
export { name as newName }
import Index from './Index'
import * as Index from './Index'
import { name, value, id } from './Index'
import { name as newName } from './Index'
import './Index'
import Index, { name, value, id } from './Index'
export命令
и import命令
объединяется и записана в одной строке
Интерфейс, в результате чего текущий модуль не может напрямую использовать свои импортные
LET ARR = [1, 2, 3, 4] // Включает () ES6 console.log (arr.includes (3)) // true Console.log ([1, 2, NAN]. Includes (NAN)); // Включает () ES7 console.log (arr.includes (1, 0)) // true Console.log (arr.includes (1, 1)) // Файлсферныйоператор
**
для представления Math.pow()
// Оператор питания ES7 Console.log (Math.Pow (2, 3)) // 8 Console.log (2 ** 8) // 256
Пусть str = 'domesy' // padstart (): будет ли он заполнен в виде пространств? "0")); Console.log ("8-27" .padstart (10, "yyyy-0M-0D");// padend (): то же использование,
console.log ("1" .padend (2, "0"));
let obj = {name: 'domesy', value: 'React'} //Object.values () console.log (object.values (obj)) // ['React', 'React'] //Object.Entries () Console.log (object.Entries (obj)) // [['name', 'value'], ['React', 'React']]
Функция: изменить асинхронную функцию на синхронную функцию (синтаксический сахар генератора)
const func = async () => { Пусть обещание = новое обещание ((Resolve, Dize) => { setTimeout(() => { Resolve ("выполнить"); }, 1000); }); console.log (ожидая обещания); console.log (ждать 0); console.log (wait resport.resolve (1)); консоль.журнал(2); return promise.resolve (3); } func (). Тогда (val => { console.log (val);
}
)
forEach()
Promise
then
async/await
for-of
Promise.all()
try catch
reject
Есть две ситуации: это объект обещания
. Это не прозвена, как и в результате выражения.
Если он ждет объекта Promise, wawait также приостановит код за Async, сначала выполните код синхронизации снаружи Async, дождитесь выполнения объекта обещания, а затем используйте параметры разрешения в качестве результата операции выражения ожидания.
Преимущества и:
ясность
undefined
возвращается, когда встречается нелегальное выброс строки, а исходная строка может быть получена из raw
.// расслаблять ограничения строки const test = (value) => { console.log (значение) }Тест `domesy` // [
domesy
', raw: [" domesy "]]
.
вернуть новое обещание ((res, rej) => { setTimeout(() => { if (время <500) { res (время) }еще{ rej (время) } }, время) }) } Веселье (300) .then ((val) => console.log ('res', val))) .catch ((erro) => console.log ('rej', erro)) .finally (() => console.log ('закончил')) // Результат выполнения: res 300 завершен Func (700) .then ((val) => console.log ('res', val))) .catch ((erro) => console.log ('rej', erro)) .finally (() => console.log ('закончил')) // Результат выполнения: REJ 700 Завершен
, асинхронные итератор, цикл ожидает, пока каждый Promise对象
станет resolved状态
прежде чем вступить в следующий шаг,
пусть getTime = (seconds) => { вернуть новое обещание (res => { setTimeout(() => { res (секунды) }, секунды) }) } Async Function Test () { Пусть arr = [gettime (2000), gettime (500), gettime (1000)] для ожидания (пусть x arr) { console.log (x); } } test () // Выполнить 2000 500 1000
//JSON.Stringify ( ) Обновление консоли.log (json.stringify (" ud83d ude0e"));console.log
u {d800}"));
Infinity
)).Пусть Arr = [1, 2, 3, 4] // flatmap () Console.log (arr.map ((x) => [x * 2])); console.log (arr.flatmap ((x) => [x * 2]); console.log (arr.flatmap ((x) => [[x * 2])); const arr1 = [0, 1, 2, [3, 4]]; const arr2 = [0, 1, 2, [[[3, 4]]]; Console.log (arr1.flat ()); Console.log (arr2.flat (2));console.log
arr2.flat (Infinity)
Object.entries()
let map = new Map ([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
["a", 1], ["B", 2], ]); let obj = object.fromentries (map); Console.log (obj
; ["a", 1], ["B", 2], ] let obj = object.fromentries (arr);
(obj)
; A: 1, b: 2, C: 3 } пусть res = object.fromentries ( Object.Entries (obj) .filter (([key, val]) => value! == 3) ) console.log (res) // {a: 1, b: 2}
// toString () функциональный тест () { consople.log ('domesy') } console.log (test.toString ()); // function test () { //consople.log('domesy ') //}
в ES10, попытка Catch Cange может игнорировать параметры подъема
let func = (name) => { пытаться { вернуть json.parse (имя) } ловить { вернуть ложь } } Консоль.log (func (1)) // 1 console.log (func ({a: '1'})) // false
безопасно
но
Console.log (2 ** 53) // 9007199254740992 console.log (number.max_safe_integer) // 9007199254740991 // bigint const bigint = 9007199254740993n Console.log (bigint) // 9007199254740993n console.log (typeof bigint) // bigint console.log (1n == 1) // true Console.log (1n === 1) // Неверно Const Bigintnum = Bigint (9007199254740993n) Console.log (bigintnum) // 9007199254740993nВ общей сложности есть 7
, а именно: srting
, number
, boolean
object
null
undefined
symbol
,
Array
Function
Date
object
RegExp
8. Это: srting
, number
, boolean
, object
, null
, undefined
, symbol
, BigInt
Orders.allSettled ():
Promise.all()
Ording.LlSetTled ([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
Обещание.ereject ({ Код: 500, MSG: "Исключение службы", }), Обещание.resolve ({ Код: 200, Данные: ["1", "2", "3"], }), Обещание.resolve ({ Код: 200, Данные: ["4", "5", "6"], }), ]). Тогда ((res) => { console.log (res) // [{anpuse: {code: 500, msg: 'Исключение службы'}, статус: "Отклонено"}, // {Причина: {Code: 200, Data: ["1", "2", "3"]}, Статус: "Отклонено"}, // {Причина: {Code: 200, Data: ["4", "5", "6"]}, статус: "Отклонено"}] const data = res.filter ((item) => item.status === "fulfiled"); console.log (data); // {Причина: {Code: 200, Data: ["4", "5", "6"]}, статус: "Отклонено"}] })
require()
import()
require
загрузка// then () let modulepage = "index.js"; Import (modulePage) .Then ((module) => { module.init (); }); // в сочетании с Async Wait (асинхронный () => { const modulepage = 'index.js' const module = await import (modulepage); Console.log (модуль) })
// Консоль среды браузера. //узел Console.log (GlobalThis) // Глобальныйдополнительный
,
// до es11 let a = user && user.name// теперь
B =
"||" "??" const b = 0; const a = b || 5; Консоль.log (A); // 5 const b = null // не определен const a = b ?? 123;Console.Log
(
A);
let str = "hi!, Это новая особенность ES6 ~ es12, в настоящее время ES12" console.log (str.replace ("es", "sy"); , это новая особенность SY6 ~ ES12, в настоящее время ES12 console.log (str.replace (/es/g, "sy")); , это новая особенность Sy6 ~ sy12, в настоящее время это Sy12 console.log (str.replaceall ("es", "sy")); , это новая особенность Sy6 ~ sy12, в настоящее время это Sy12 console.log (str.replaceall (/es/g, "sy")); Это новая особенность Sy6 ~ Sy12, в настоящее время SY12
. Любой
Обещание. Обещание. Обещание. Resolve ("Second"), Обещание. Resolve ("First"), ]) .then ((res) => console.log (res)) // секунд .catch ((err) => console.error (err)); Обещание. Ording.reject ("ошибка 1"), Ording.reject ("ошибка 2"), Ording.reject ("ошибка 3"), ]) .then ((res) => console.log (res)) .catch ((err) => console.error (err)); // AggregateError: все обещания были отклонены Обещание. Обещание.resolve ("третий"), Обещание. Resolve ("Second"), Обещание. Resolve ("First"), ]) .then ((res) => console.log (res)) // третий.catch ((
err));
Пусть SleedRef = new SleedRef ({name: 'domesy', год: 24}) SleedRef.deref () // {name: 'domesy', год: 24} SleedRef.deref ().
//
Пусть num2 = 10; num1 && = num2; Консоль.log (num1); // эквивалентно num1 && (num1 = num2); if (num1) { num1 = num2; }
let num1; Пусть num2 = 10; num1 || = num2; Консоль.log (num1); // эквивалентно num1 || (num1 = num2); if (! num1) { num1 = num2; }
Пусть num2 = 10; Пусть num3 = null; num1 ?? = num2; Консоль.log (num1); num1 = false; num1 ?? = num2; console.log (num1); num3 ?? = 123; Консоль.log (num3); // эквивалент // num1 ?? (num1 = num2
)
Пусть num2 = 100_000; Консоль.log (num1); Консоль.log (num2); const num3 = 10.12_34_56 Консоль.log (num3);