Функции PHP 8, которые я хотел бы, также существовали в JavaScript
Я знаю, что до сих пор существует много ненависти к PHP, но, на мой взгляд, с версией 7 (которой уже более 5 лет!) PHP превратился в отличный язык, который забавен и даже безопасен для типов. использовать. Помимо Just-In-Time compilation, которая может значительно повысить производительность PHP-приложений, версия 8 содержит множество полезных функций.
Я хочу представить три из них, которые я действительно хотел бы использовать в JavaScript. Надеюсь, это пригодится особенно тем, кто еще не знаком с PHP 8. Пойдем!
# 1 Именованные аргументы
Предположим, у вас есть функция foo
с 6 параметрами с a
по f
, имеющими разные значения по умолчанию, и теперь вы хотите вызвать эту функцию, передав аргумент false
только для последнего параметра.
PHP 8:
foo(f: false);
JavaScript:
foo('test', 42, true, 'bar', 5.5, false);
К сожалению, в JavaScript передача аргументов функции зависит исключительно от позиции параметра. Я знаю, что именованные аргументы можно моделировать с помощью объектов и деструктурирования, но встроенная функция здесь была бы намного удобнее.
См. RFC: именованные аргументы
# 2 Выражение соответствия
Новое выражение match
в PHP очень похоже на выражение switch
, за исключением того, что оно является выражением и может использоваться для непосредственного присвоения значений переменной или возвращаемых значений. Это очень удобно, если у вас есть более двух возможных значений для назначения.
PHP 8:
$fontWeight = match ($weight) {
100 => "Super Thin",
300 => "Thin",
400 => "Normal",
600 => "Bold",
900 => "Heavy"
};
JavaScript:
const fontWeight = '';
switch (weight) {
case 100:
fontWeight = "Super Thin";
break;
case 300:
fontWeight = "Thin";
break;
case 400:
fontWeight = "Normal";
break;
case 600:
fontWeight = "Bold";
break;
case 900:
fontWeight = "Heavy";
break;
}
Выражение match
может быть смоделировано объектом JavaScript, но для этого потребуется дополнительная переменная (таким образом, больше зарезервированной памяти) и не удастся в случаях, когда проверенные значения не могут использоваться в качестве ключей объекта.
См. Документы: match
# 3 Необязательная цепочка
Создание цепочки только при наличии необходимого свойства - очень элегантный способ запроса объектов. В PHP вы можете сделать это сейчас с помощью оператора nullsafe.
PHP 8:
$country = $session?->user?->getAddress()?->country;
JavaScript:
const country =
session && session.user && session.user.getAddress() && session.user.getAddress()['country']
? session.user.getAddress()['country']
: null;
В JavaScript вам все равно придется шаг за шагом проверять, существует ли соответствующее свойство. Существует соответствующее предложение TC39, которое к настоящему времени находится на стадии 4, и я действительно с нетерпением жду, чтобы оно стало частью спецификаций ECMAScript.
Заверните
Итак, мы увидели небольшой набор новых функций PHP 8, которые также станут отличным дополнением к JavaScript. Может быть, вы имеете в виду другие функции PHP, которые отсутствуют в JavaScript, или вы знаете лучшую копию JavaScript для решения вышеуказанных проблем, чем я? Большой! Обсудим в комментариях.
Первоначально опубликовано: 8 февраля 2021 г. на сайте dev.to