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

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

Meld me wanneer het boek is toegevoegd
Dit boek lezen upload een EPUB- of FB2-bestand naar Bookmate. Hoe kan ik een boek uploaden?
  • Мария Русаковаciteerde uit3 jaar geleden
    Есть хорошая поговорка: «JavaScript — единственный язык, которым разработчики пользуются, не научившись им пользоваться».
  • b2036955411citeerde uit4 jaar geleden
    typeof null === "object"; // true
  • Антон Власовciteerde uit3 jaar geleden
    Иначе говоря, если и движок, и разработчик интерпретируют значение 42 (число) не так, как они интерпретируют значение "42" (строка), то эти два значения имеют разные типы — number и string соответственно
  • Антон Власовciteerde uit3 jaar geleden
    У JavaScript с Java общего не больше, чем у луна-парка с Луной.
  • Антон Власовciteerde uit3 jaar geleden
    JavaScript определяет семь встроенных типов:
    • null
    • undefined
    • boolean
    • number
    • string
    • object
    • symbol — добавлен в ES6!
  • Антон Власовciteerde uit3 jaar geleden
    Типы языка ECMAScript — undefined, null, boolean, string, number и object
  • Антон Власовciteerde uit3 jaar geleden
    Читайте и держите книгу поближе к своему рабочему столу!
  • Дмитрий Мальченкоciteerde uit3 jaar geleden
    Какое же седьмое строковое значение может вернуть typeof?

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

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

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

    function a(b,c) {

    /* .. */

    }

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

    a.length; // 2
  • b2036955411citeerde uit4 jaar geleden
    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).
    На происходящее также можно взглянуть иначе: если вы часто выполняете со «строками» операции, которые интерпретируют их как мас
  • b2036955411citeerde uit4 jaar geleden
    JavaScript определяет семь встроенных типов:
    • null
    • undefined
    • boolean
    • number
    • string
    • object
    • symbol — добавлен в ES6!
fb2epub
Sleep je bestanden hiernaartoe (maximaal 5 per keer)