Привет, Гайзз, Добро пожаловать во вторую часть 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
Это происходит из-за «==» (оператор абстрактного равенства). Объяснение немного сложное. Пожалуйста, прочитайте внимательно.
- Если x равно null и y не определено, вернуть true.
- Если x не определено и y равно null, вернуть true.
- Если Type(x) — это число, а Type(y) — это String, вернуть результат сравнения x == ! ToNumber(y).
- Если Type(x) — это String, а Type(y) — это Number, вернуть результат сравнения ! ToNumber(x) == y.
- Если Type(x) — String, а Type(y) — BigInt, вернуть результат сравнения y == x .
- Если Type(x) — Boolean, вернуть результат сравнения ! ToNumber(x) == y.
- Если Type(y) — Boolean, вернуть результат сравнения x == ! ToNumber(y).
- Если Type(x) — это String, Number, BigInt или Symbol, а Type(y) — это Object, вернуть результат сравнения x == ToPrimitive(y).
- Если 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, и мы также должны изучить такие аспекты языка.
Это все для этой части. В следующей части мы рассмотрим больше таких примеров. А пока продолжайте учиться.