Привет, Гайзз, Добро пожаловать во вторую часть Ticky JavaScript. Если вы здесь впервые, ознакомьтесь с частью 1. Ссылка ниже ⏬



Завершающие запятые в массиве

Знаете ли вы, что вы можете создать массив без значений, а только с запятыми? Прочтите приведенный ниже код.

let a = [, , ,];
a.length; // -> 3
a.toString(); // -> ',,'

Да, это действительно.

Запятые в конце (иногда называемые «последними запятыми») могут быть полезны при добавлении новых элементов, параметров или свойств в код JavaScript. Если вы хотите добавить новое свойство, вы можете добавить новую строку, не изменяя предыдущую последнюю строку, если в этой строке уже используется завершающая запятая. Это делает контроль версий чище, а редактирование кода может быть менее проблематичным.

для получения дополнительной информации ознакомьтесь с этой ссылкой.



Запятые в конце — JavaScript | MDN
Запятые в конце (иногда называемые «последними запятыми
) могут быть полезны при добавлении новых элементов, параметров или свойств в…developer.mozilla.org»



Будьте осторожны при сравнении массивов.

Вы не поверите, но равенство массивов — это чудовище. просто посмотрите на приведенный ниже пример и попробуйте.

[] == ''   // -> true
[] == 0    // -> true
[''] == '' // -> true
[0] == 0   // -> true
[0] == ''  // -> false
[''] == 0  // -> true

[null] == ''      // -> true
[null] == 0       // -> true
[undefined] == '' // -> true
[undefined] == 0  // -> true

Это происходит из-за «==» (оператор абстрактного равенства). Объяснение немного сложное. Пожалуйста, прочитайте внимательно.

  1. Если x равно null и y не определено, вернуть true.
  2. Если x не определено и y равно null, вернуть true.
  3. Если Type(x) — это число, а Type(y) — это String, вернуть результат сравнения x == ! ToNumber(y).
  4. Если Type(x) — это String, а Type(y) — это Number, вернуть результат сравнения ! ToNumber(x) == y.
  5. Если Type(x) — String, а Type(y) — BigInt, вернуть результат сравнения y == x .
  6. Если Type(x) — Boolean, вернуть результат сравнения ! ToNumber(x) == y.
  7. Если Type(y) — Boolean, вернуть результат сравнения x == ! ToNumber(y).
  8. Если Type(x) — это String, Number, BigInt или Symbol, а Type(y) — это Object, вернуть результат сравнения x == ToPrimitive(y).
  9. Если Type(x) — это Object, а Type(y) — это String, Number, BigInt или Symbol, вернуть результат сравненияToPrimitive(x) = = г.

Непосредственно добавляйте ценность на N-м месте

let arr = []
arr[100] = 'value'

Это вообще возможно??? Да, это. JavaScript напрямую устанавливает значение в «N-ю» позицию. В данном случае на 100-й позиции.

Тогда возникает вопрос: каковы будут значения позиции до 100-й?

Ответ не определен. Это то же самое, что и определение переменных без их инициализации.

let arr = []
arr[100] = 'value'
arr.length  // -> 100
arr[0]      // -> undefined
as same as
let a;
console.log(a)  // -> undefined

Математика с «true”» и «false"»

Давайте займемся математикой.

true + true;                          // -> 2
(true + true) * (true + true) - true; // -> 3

Да, мы можем выполнять математические операции над логическими значениями.

В JavaScript логическое значение приводится как число. для «истинных» и «ложных» значений он преобразуется как «1» и «0» соответственно.

Сравнение трех чисел

1 < 2 < 3; // -> true
3 > 2 > 1; // -> false

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

Это происходит из-за принуждения значений «истина» и «ложь» к «0» и «1» соответственно.

Давайте разберемся в этом один за другим.

expression : 1 < 2 < 3;
step 1 : (1 < 2) < 3
step 2 : true < 3
step 3 : 1 < 3        // true is coerce as 1
answer : true

Второй пример:

expression : 3 > 2 > 1;
step 1 : (3 > 2) > 1
step 2 : true > 1
step 3 : 1 > 1     // true is coerce as 1
answer : false

Такие примеры помогают нам понять, насколько сложен JavaScript, и мы также должны изучить такие аспекты языка.

Это все для этой части. В следующей части мы рассмотрим больше таких примеров. А пока продолжайте учиться.