Вот, наслаждайтесь этой песней, читая рассказ: Отпусти ее. (Нет, они мне не заплатили). Нажмите здесь, чтобы прочитать краткое изложение главы 1 ВВЕРХ И ПРОДОЛЖЕНИЕ.

Итак, заголовок этой главы - В JavaScript. Это действительно приведет вас к более глубокому изучению JavaScript.

  • Напомним, что существует 6 типов переменных: String, Number, Boolean, null и undefined, object, symbol, как уже упоминалось в предыдущем рассказе.

Тип object относится к составному значению, в котором вы можете установить свойства (именованные местоположения), каждое из которых содержит собственные значения любого типа. Это, пожалуй, один из самых полезных типов значений во всем JavaScript.

var obj = {
	a: "hello world",
	b: 42,
        c: function foo(){ console.log("Hello World")}   
/*YES EVEN THAT
IS POSSIBLE*/
};
obj.a;//hello world
obj["b"];//42

Массив - это object, который хранит значения (любого типа) не конкретно в именованных свойствах / ключах, а скорее в позициях с числовым индексом. Например:

var arr = [
	"hello world",
	42,
	true
];

arr[0]; //hello world
  • массивы - это особые объекты (как подразумевает typeof), они также могут иметь свойства, включая автоматически обновляемое свойство length.
  • Функции являются подтипом объектов, по-прежнему typeof возвращает «функцию». Доступно множество встроенных функций, таких как toUpperCase();, toFixed();. Я не могу перечислить их все.

Принуждение - это концепция, в которой приведение типа переменной происходит, когда с переменной выполняются определенные операции.

var a = "48";
var b = Number(a); //Normal type casting in JS
var c = a*1; // Coercion, c is a number variable
  • Когда не логические значения приводятся к логическим, тогда значения часто оцениваются как истинные и ложные, но возникает вопрос, какое из них будет истинным, а какое - ложным?
  • Верно: "hello"(non-empty string),23(non zero number),[ ](array empty or filled),{}(object empty or filled),function foo(){___}
  • Неверно: ""(empty string),0,-0,NaN,null,undefined

Равенство:

1, «==» - свободное равенство

2, «===» - строгое равенство

var a = "42",b = 42;
a==b;//true
a===b;//false
  • Мы должны избегать «==» при сравнении с: 0,"",[],true/false,null
  • Еще одна интересная вещь, которую я обнаружил в этой главе, - это сравнение массивов. Сравнение массивов всегда будет давать false.
  • Поведение! = И! == является свободным и строгим соответственно. Также неравенства довольно просты и не отличаются от классического (‹=,› =, ‹,›).

Теперь я просто напишу несколько определений некоторых терминов. У нас есть отдельные главы, в которых эти темы подробно рассматриваются. Так что не волнуйтесь, если у вас не получится сразу.

  • Подъем: это стандартное поведение JavaScript, заключающееся в перемещении всех объявлений в верхнюю часть текущей области видимости (в верхнюю часть текущего скрипта или текущей функции или области).
  • Полифилинг. Полифил - это код, который реализует функцию в веб-браузерах, которые не поддерживают эту функцию.
  • Транспортировка: процесс чтения исходного кода, написанного на одном языке программирования, и создания эквивалентного кода на другом языке.
  • Прототипы. Когда вы ссылаетесь на свойство объекта, если это свойство не существует, JavaScript автоматически использует внутреннюю ссылку прототипа этого объекта, чтобы найти другой объект для поиска свойства. Вы можете подумать об этом почти как о резерве, если свойство отсутствует.
  • this идентификатор: если функция имеет внутри this ссылку, эта this ссылка обычно указывает на object. Но на что object он указывает, зависит от того, как была вызвана функция. Важно понимать, что this не относится к самой функции, что является наиболее распространенным заблуждением.
  • Замыкания. Вы можете думать о закрытии как о способе «запомнить» и продолжить доступ к области действия функции (ее переменным) даже после того, как функция завершила выполнение.
  • IIFE: немедленно вызываемые функциональные выражения. Как следует из названия, они вызываются сразу после объявления функции. Типичный пример - функция settimeout.
(function IIFE(){
	console.log( "Hello!" );
})();
// "Hello!"
  • Модули: модули позволяют определять частные детали реализации (переменные, функции), которые скрыты от внешнего мира, а также общедоступный API, который доступен извне.
  • use Strict: это хорошая практика программирования, поскольку это удерживает вас от логических ошибок, не позволяя создавать глобальные переменные.

Я рассмотрел большую часть этой главы. У YDKJS up and going также есть глава 3, но я бы не стал делать эту часть, поскольку это не что иное, как введение во все серии книг.

Так что спасибо, что прочитали это. Следите за моим путешествием по программированию на github. Если вы новичок, то подписывайтесь на меня в среде.