bookmate game
ru
Кайл Симпсон

Вы не знаете JS. Типы и грамматические конструкции

Benachrichtigen, wenn das Buch hinzugefügt wird
Um dieses Buch zu lesen laden Sie eine EPUB- oder FB2-Datei zu Bookmate hoch. Wie lade ich ein Buch hoch?
  • Мария Русаковаhat Zitat gemachtvor 3 Jahren
    Есть хорошая поговорка: «JavaScript — единственный язык, которым разработчики пользуются, не научившись им пользоваться».
  • b2036955411hat Zitat gemachtvor 3 Jahren
    typeof null === "object"; // true
  • Антон Власовhat Zitat gemachtvor 2 Jahren
    Иначе говоря, если и движок, и разработчик интерпретируют значение 42 (число) не так, как они интерпретируют значение "42" (строка), то эти два значения имеют разные типы — number и string соответственно
  • Антон Власовhat Zitat gemachtvor 2 Jahren
    У JavaScript с Java общего не больше, чем у луна-парка с Луной.
  • Антон Власовhat Zitat gemachtvor 2 Jahren
    JavaScript определяет семь встроенных типов:
    • null
    • undefined
    • boolean
    • number
    • string
    • object
    • symbol — добавлен в ES6!
  • Антон Власовhat Zitat gemachtvor 2 Jahren
    Типы языка ECMAScript — undefined, null, boolean, string, number и object
  • Антон Власовhat Zitat gemachtvor 2 Jahren
    Читайте и держите книгу поближе к своему рабочему столу!
  • Дмитрий Мальченкоhat Zitat gemachtvor 2 Jahren
    Какое же седьмое строковое значение может вернуть typeof?

    typeof function a(){ /* .. */ } === "function"; // true

    Легко решить, что function является высокоуровневым встроенным типом в JS, особенно при таком поведении оператора typeof. Тем не менее при чтении спецификации вы увидите, что function на самом деле ближе к «подтипу» object. А именно функция называется там «вызываемым объектом» — то есть объектом с внутренним свойством [[Call]], которое позволяет активизировать его посредством вызова.

    Тот факт, что функции в действительности являются объектами, имеет ряд важных следствий. Самое важное — то, что они могут обладать свойствами. Пример:

    function a(b,c) {

    /* .. */

    }

    У объекта функции есть свойство length, в котором хранится количество формальных параметров в объявлении этой функции:

    a.length; // 2
  • b2036955411hat Zitat gemachtvor 3 Jahren
    rray.prototype.reverse.call( a );
    // все равно возвращает объектную обертку String (см. главу 3)
    // для "foo" :(
    Другое обходное решение заключается в преобразовании строки в массив, выполнении нужной операции и преобразовании обратно в строку:
    var c = a
    // разбиение `a` на массив символов
    .split( "" )
    // переставить массив символов в обратном порядке
    .reverse()
    // снова объединить массив символов в строку
    .join( "" );
    c; // "oof"
    Выглядит некрасиво? Так оно и есть. Но такое решение работает для простых строк, поэтому если вам понадобится решение «на скорую руку», то такой вариант вполне подойдет.

    Будьте осторожны! Такое решение не работает для строк, содержащих сложные символы (Юникод): многобайтовые символы и т.д. Для правильного выполнения таких операций потребуется более сложная библиотека. За информацией обращайтесь к работе Матиаса Байненса (Mathias Bynens): Esrever (https://github.com/mathiasbynens/esrever).
    На происходящее также можно взглянуть иначе: если вы часто выполняете со «строками» операции, которые интерпретируют их как мас
  • b2036955411hat Zitat gemachtvor 3 Jahren
    JavaScript определяет семь встроенных типов:
    • null
    • undefined
    • boolean
    • number
    • string
    • object
    • symbol — добавлен в ES6!
fb2epub
Ziehen Sie Ihre Dateien herüber (nicht mehr als fünf auf einmal)