Рубрики
Без рубрики

Топ 5 JavaScript Secrets

JavaScript очень … Очень особый язык. Даже когда вы думаете, что вы знаете все свои секреты, он … Tagged с JavaScript, WebDev.

JavaScript очень … Очень особый язык Отказ Даже когда вы думаете, что вы знаете все свои секреты, он все еще может удивить вас.

Как и большинство вещей в этом мире, не все секреты JS действительно полезны. На самом деле большинство из них не так, как все, не известные другими, только приводит к путаница Отказ Использование секретных советов и трюков может сделать ваш код быстрее или, возможно, даже быть меньшим, но он, безусловно, ухудшает его читабельность , что плохо для всего потенциального читателя вашего кода – включая себя из будущего.

Но, с этим маленьким предупреждением о пути, нет ничего плохого в том, чтобы знать эти секреты – либо иметь возможность читать загадочный код другого или просто показывать.

Итак, без дальнейшего ADO, давайте исследовать 5 из того, что я думаю, что некоторые из наименее известных JavaScript Secrets. !

Вы знали, что есть пустота Оператор в JS? Что это вы можете спросить? Ну, это берет выражение (простой, либо сложный, завернутый в () ) Вы предоставляете сразу после него, оценивает его, а … Всегда возвращается undefined Отказ

void 0; // undefined
void "text"; // undefined
void {}; // undefined
void (() => {}); // undefined
// ... you get the point

Итак, какой тип использования есть для такого Оператор ума – ошеломляющий ? Ну, как оказывается – есть один. Верю в это или нет undefined может на самом деле быть определен Действительно

(() => {
  const undefined = "foo";
  console.log(undefined, typeof undefined); // "foo", "string"
  console.log(void 0, typeof void 0); // undefined, "undefined"
})();

Для вашей информации, в JS, undefined не Зарезервировано ключевое слово и может быть использован в качестве имени переменной, эффективно переоценивающую глобальную в определенную область.

Используя пустота Оператор со случайным выражением (обычно 0 ) Уверяет вас, что вы получите правильный без изменений undefined не важно что.

С скобками всеможены в JavaScript – так же, как практически в любом другом языке программирования. Но знал ли вы, что вам не нужно всегда писать их, даже в местах, где вы обычно делаете?

Класс конструктор

Самое безопасное место для пропущенных скобок находится в параметре менее Класс Конструктор вызов. Это верно – вы можете просто удалить свои скобки, сохранить эти 2 байта пространства, а ваш код работает просто хорошо!

new Date();
new Date;
new Date().getYear();
(new Date).getYear(); // parentheses needed in a different place

IIFE.

Второй и последний (от того, что я знаю) место, где вы можете опустить скобки, находится в iiFes или Немедленно вызванные функциональные выражения Отказ

Как правило, чтобы использовать IIFE, вам необходимо обернуть функцию выражения скобками и следовать за тем, что с другой парой скобок, чтобы на самом деле вызывать функцию.

(() => {
  // ...
})();
(function () {
  // ...
})();

Но на самом деле упаковочные скобки не всегда требуются … по крайней мере при определенных условиях. Вы можете сделать это с функциональными выражениями, определенными с Функция ключевое слово И только когда результат IIFE является назначен переменной или когда он предшествует Унарный оператор (Мне нравится пустота , ! , так далее.).

void function () {
  // ...
}();
const result = function () {
  // ...
}();

Оператор или задание необходимо, чтобы парсер знал, что следующая функция на самом деле является Функция выражения .

К сожалению, этот метод не работает со стрелками функциями, поэтому, если ваша цель – просто побрить некоторые байты, я предлагаю вам использовать стрелку и обсуждали скобки в конце концов.

Далее у нас есть другой оператор – на этот раз короче И гораздо полезнее! Это запятая ( , ) – Да, вы прочитали это право, которое в JS позволяет выполнять несколько выражений, один на один, когда «Возвращение» Значение, полученное из Последнее выражение Отказ Посмотри:

// parentheses are required for proper assignment
const x = (1, 2, 3, 4); // 4
const y = ((() => "a")(), (() => "b")()); // "b"
const test = () => {
  return console.log(y), y;
};
test(); // logs "b" and returns "b"

Итак, как вы можете видеть, возможности оператора запятой являются Действительно впечатляет Отказ Вы можете использовать любое выражение и почти все остальное с небольшим количеством помощи от IIFES. И когда вы комбинируете это с Функции стрелки или console.log () Для отладки у вас есть несколько впечатляюще-короткие лямбдаса или лучшего опыта отладки без дополнительной строки кода!

И пока мы находимся в теме операторов, почему бы не обсудить еще одно недооцененные конструкции из этой категории – в оператор. Единственным использованием для этого оператора является проверка объекта Содержит определенную недвижимость , вот так:

const obj = { a: 1, b: 2, c: 3 };
"a" in obj; // true
"d" in obj; // false
delete obj.a;
obj.b = undefined;
"a" in obj; // false
"b" in obj; // true

Итак, почему вы используете модный оператор, а не просто проверять свойство с помощью obj [опора] Синтаксис как нормальный человек?

Ну, есть некоторые определенные различия и, таким образом, Преимущества к этому подходу. Во-первых, очень удобно использовать его для проверки наличия свойств, которые могут держать Falsy ценности Отказ В таких случаях typeof obj [опора] потребуется, что, безусловно, гораздо более многословным, чем «опоры» в Обжим Отказ

С тем, что сказал, недостаток (или особенность в зависимости от того, как вы смотрите на него) в Оператор заключается в том, что он возвращает правда Даже для свойств, которые были непосредственно назначены undefined стоимость. Если это то, что вы хотите, то я думаю, все в порядке, но это также означает, что вам придется использовать Удалить Оператор к Удалить свойства вместо просто назначения undefined (который немного медленнее).

Наконец, у нас есть функция, которая также редко используется – этикетки Отказ В JS, этикетки (как Имя: ) можно использовать для эффективного Имя блоки кода а также разные Странские операторы (например для ). Наличие таких наименований, назначенных на определенные части вашего кода, позволяет вам позже ссылаться на эти детали для использования с такими оперантами, такими как Продолжать и Перерыв Отказ

outer: for (let i = 0; i < 10; i++) {
  inner: for (let j = 0; j < 10; j++) {
    if (i === j) {
      continue outer;
    }
    console.log(i, j);
  }
}

block: {
  // Yup, code blocks are a thing
  console.log("You'll see this");
  break block; // You can break form code blocks when they're labelled
  console.log("But not that");
}

Этикетки особенно полезны при работе с сложным контрольный поток в пределах Вложенные петли . Конечно, вы можете использовать их в Перерыв Вне кодовых блоков, но я действительно не знаю, почему вы сделаете это – просто используйте функции или даже поддерживают, как нормальный человек.

Итак, это мой список некоторых из самых интересных и меньших известный JavaScript Secrets. Дайте мне знать в Комментарии Сколько из них вы сделали/не знали о том, как прочитать эту статью. О, а также – если вам нравятся такие вещи, я очень поощряю вас Проверьте 2 мой веб-разработчик трюки Статьи И все остальные вещи на этом блоге, где я охвачу секреты Консоль API , Объект API и Многие более ! Действительно крутые вещи!

Для более современного контента Web Dev, Следуй за мной на Twitter , Facebook или через Мой личный блог . Спасибо за чтение и счастливое кодирование!

Оригинал: “https://dev.to/areknawo/top-5-javascript-secrets-2gp7”