You don't know js(up & going)
Приведение типов (coercion)
Download 424,95 Kb. Pdf ko'rish
|
You don\'t know JS(up & going)
- Bu sahifa navigatsiya:
- _____________________________________________________________
- _____________________________________________________________ Как бы истинный и ложный
Приведение типов (coercion)
Мы немного касались приведения типов в главе 1, давайте освежим информацию в памяти еще раз. Приведение в JavaScript существует в двух формах: *явное* и *неявное*. Явное приведение — это когда можно явным образом увидеть в коде конвертации из одного типа в другой, в свою очередь, неявное приведение — это когда конвертация происходит в результате менее очевидных побочных эффектов других операций. Возможно, вы слышали мнения по типу "приведение типов - зло", опирающиеся на факт того, что безусловно существуют места, где приведение может привести к удивительным результатам. Конечно, ничто так не расстраивает разработчиков как моменты, когда язык преподносит им сюрпризы. Приведение — не зло и не должно преподносить сюрпризов. На самом деле, большинство сценариев, которые вы можете построить, используя приведение типов, вполне адекватны и понятны, они даже могут использоваться с целью *увеличить* читаемость вашего кода. Но мы не будем далее вступать в дебаты — глава 4 книги *Типы и синтаксис* этой серии книг раскроет все стороны приведения. Вот пример *явного* приведения: _____________________________________________________________ var a = "42"; var b = Number( a ); a; // "42" b; // 42 — число! ``` А вот пример *неявного* приведения: ```js var a = "42"; var b = a * 1; // здесь "42" неявно приводится к 42 a; // "42" b; // 42 — число! _____________________________________________________________ Как бы истинный и ложный В главе 1, мы кратко рассмотрели "как бы истинную" и "как бы ложную" природу значений: когда не-`boolean` значение приводится к `boolean`, становится ли оно `true` или `false`, соответственно? Особый список "как бы ложных" значений в JavaScript таков: ● `""` (пустая строка) ● `0`, ` 0`, `NaN` (некорректное `число`) ● `null`, `undefined` ● `false` Любое значение, не входящее в этот список — "как бы истинно." Вот несколько примеров: ● `"hello"` ● `42` ● `true` ● `[ ]`, `[ 1, "2", 3 ]` (массивы) ● `{ }`, `{ a: 42 }` (объекты) ● `function foo() { .. }` (функции) Важно помнить, что не-`boolean` значение следует такому приведению "истинный"/"ложный", только если оно действительно приводится к `boolean`. Это не единственная трудность, которая может смутить вас в ситуации, когда кажется, что значение приводится к `boolean`, хотя на самом деле это не так. Равенство Есть четыре операции равенства: `==`, `===`, `! ` и `! `. Формы с `!` — конечно же, симметричные версии "не равно" своих противоположностей; *не равно* не следует путать с *неравенством*. Разница между `==` и `===` — обычно состоит в том, что `==` проверяет на равенство значений, а `===` проверяет на равенство и значений, и типов. Однако, это не точно. Подходящий способ охарактеризовать их: `==` проверяет на равенство значений с использованием приведения, а `===` проверяет на равенство, не разрешая приведение. Операцию `===` часто по этой причине называют "строгое равенство". Посмотрите на пример неявного приведения, которое допускается нестрогим равенством `==` и не допускается строгим равенством `===`: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2025
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling