JavaScript
Его всегда критиковали за то, что Netscape в 1995 году на его создание потребовалось 10 дней. Ничто не бывает совершенным за 10 дней, но как только определенные функции выпущены, ошибки или недостатки быстро становятся существенными, и их почти невозможно изменить.
Javascript
Разработка идет очень быстро, времени на корректировку дизайна просто нет. Через полтора года после его введения вышел международный стандарт. Недостатки дизайна не раскрываются полностью до того, как это станет нормой.
историческое наследие
Например, распространенные исторические недостатки дизайна:
-
null
а такжеundefined
Их очень легко спутать -
==
проблема преобразования типа -
var
Объявить о создании глобальной переменной - Автоматически вставлять точку с запятой в конце строки
- Знак плюс может представлять собой сумму чисел или конкатенацию символов.
-
NaN
странная особенность - Более...
Javascript
Многие неточные функции, которые мы можем добавитьeslint
избегать. например отключитьvar
а также==
Писать код стало обязательным для большинства людей.
настоящее/будущее
сейчасCSS、DOM、HTML
Спецификация поW3C
сформулировать,JavaScript
Спецификация поTC39
сформулировать. Те исторические изъяны тоже ушли в прошлое, но теперь есть неудовлетворительные нормы.
CSS-переменные
При объявлении переменной добавьте два дефиса перед именем переменной--
body {
--foo: #7f583f;
--bar: #f7efd2;
}
var()
Функции используются для чтения переменных.
a {
color: var(--foo);
text-decoration-color: var(--bar, #7f583f);
}
Зачем выбирать две линии соединения (--
) представляет собой переменную? потому что$
одеялоSass
Потраченный,@
одеялоLess
израсходовать._
,-
, используется в качествеIE
,chrome
Совместимое написание.CSS
В объявлении переменной не найдено ни одного символа. Чтобы не конфликтовать, официальнаяCSS
Вместо этого переменные используют два дефиса.
Как официальная стандартная спецификация, она всегда влияет на развитие следующей отрасли. Удивительно, что им можно управлять с помощью сторонних плагинов. Некоторые разработчики жаловались: архитекторы Microsoft тоже бесполезны.
Многие приложения сейчас заброшеныSass
а такжеless
, повернулся кPostCSS
объятие. Компонентно-ориентированное программирование, бесполезноеSass
а такжеless
Какие-то сложности внутри. Так--
Занудство двух персонажей будет постоянной головной болью для разработчиков.
Частные свойства класса (предложение-класс-поля)
JavaScript
серединаclass
Всем это не чуждо, это какJava
изclass
Точно так же.
Основное использование:
class BaseClass {
msg = 'hello world';
basePublicMethod() {
return this.msg;
}
}
наследовать:
class SubClass extends BaseClass {
subPublicMethod() {
return super.basePublicMethod();
}
}
Статические свойства:
class ClassWithStaticField {
static baseStaticMethod() {
return 'base static method output';
}
}
асинхронный метод
class ClassWithFancyMethods {
*generatorMethod() {}
async asyncMethod() {}
async *asyncGeneratorMethod() {}
}
Предложение о частных свойствах класса теперь вошло в стандарт, который использует префикс ключевого слова # для украшения свойств класса.
class ClassWithPrivateField {
#privateField;
constructor() {
this.#privateField = 42;
}
}
Вы правильно прочитали, нетtypescript
серединаprivate
ключевые слова.
class BaseClass {
readonly msg = 'hello world';
private basePrivateMethod() {
return this.msg;
}
}
Тем не менее, уродство синтаксиса # вызвало противоречие в сообществе:
«Предложение полей классов предоставило очень спорный синтаксис для доступа к закрытым полям — и удалось сделать единственное правильное, что позволило сообществу сосредоточить все споры на этом синтаксисе».
Капитулянтство ТС было вынуждено воплотиться в жизнь.
No dynamic access, no destructuring is a deal breaker for me
Мы делаем плагин eslint без полей частного класса и используем счетчики загрузок для учета оппозиции сообщества.
'#' как часть имени может вызвать путаницу, потому что this.#x !== this['#x'] такой странный
Разработчик интерфейса и член TC39 Хэ Шицзюнь также опубликовал несколько статей о Zhihu.class fields
Давайте посмотрим примерноprivate
сторона:johnhash.net/2017/ Вот и все — будни…
Адрес предложения:GitHub.com/Job39/предложения…
globalThis
в различныхJavaScript
Для получения глобального объекта в среде требуется другой оператор. существуетWeb
, пройти можноwindow
,self
Получить глобальный объект, но вWeb Workers
только вself
Могу. существуетNode.js
, необходимо использоватьglobal
. В нестрогом режиме вы можете вернуться в функциюthis
чтобы получить глобальный объект, иначе он вернетundefined
Поэтому вызовglobal
появилось предложение. В основном используетсяglobal
Переменная объединяет описанное выше поведение, но затем разворачивается и изменяет его наglobalThis
, что вызвало бурное обсуждение.
globalThis
Это имя сделаетthis
усложняться.
-
this
Эта тема всегда беспокоила программистов, особенноJavaScript
Новичок, есть постоянный поток сообщений в блоге об этом -
ES6
Облегчает задачу, потому что людям можно сказать, что они предпочитают стрелочные функции и просто используютthis
Определение внутреннего метода - Настоящее время
JS(modules)
, нет реального глобальногоthis
,такglobalThis
даже не ссылаясь на существующие концепции
Напрасно сейчас говорить, потому что вошлоstage 4
Адрес предложения:GitHub.com/Job39/предложения…
Суммировать
Слишком много мусора осталось в JavaScript. Теперь, затронутые этим шлаком, многие новые предложения должны быть скомпрометированы. В будущем она станет чрезвычайно сложной.
Возможно, когда-нибудь появится подмножество JavaScript без исторического багажа, который заменит его.
Статей, выпущенных в этом году
Я только начал писать в последние два месяца, надеюсь, это поможет вам, или вы также можетеДобавить группуУчитесь и прогрессируйте вместе.
- Как написать более элегантные компоненты React — дизайн-мышление
- Как написать более элегантные компоненты React — структура кода
- Итоги на конец 2021 года, куда должен пойти 8-летний интерфейс?
- Интервью переходит к сути вопроса: каков результат выполнения [...undefined]?
- Бутик-компонент React: mac-scrollbar
- Мы перешли с UmiJS на Vite
- Откажитесь от обратного вызова, у нас есть способ получше
- Как писать более элегантный код — статьи по JavaScript
- Правильная поза для оптимизации производительности React Hooks