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

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

Avisarme cuando se agregue el libro
Para leer este libro carga un archivo EPUB o FB2 en Bookmate. ¿Cómo puedo cargar un libro?
  • Мария Русаковаcompartió una citahace 3 años
    Есть хорошая поговорка: «JavaScript — единственный язык, которым разработчики пользуются, не научившись им пользоваться».
  • b2036955411compartió una citahace 3 años
    typeof null === "object"; // true
  • Антон Власовcompartió una citahace 2 años
    Иначе говоря, если и движок, и разработчик интерпретируют значение 42 (число) не так, как они интерпретируют значение "42" (строка), то эти два значения имеют разные типы — number и string соответственно
  • Антон Власовcompartió una citahace 2 años
    У JavaScript с Java общего не больше, чем у луна-парка с Луной.
  • Антон Власовcompartió una citahace 2 años
    JavaScript определяет семь встроенных типов:
    • null
    • undefined
    • boolean
    • number
    • string
    • object
    • symbol — добавлен в ES6!
  • Антон Власовcompartió una citahace 2 años
    Типы языка ECMAScript — undefined, null, boolean, string, number и object
  • Антон Власовcompartió una citahace 2 años
    Читайте и держите книгу поближе к своему рабочему столу!
  • Дмитрий Мальченкоcompartió una citahace 2 años
    Какое же седьмое строковое значение может вернуть typeof?

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

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

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

    function a(b,c) {

    /* .. */

    }

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

    a.length; // 2
  • b2036955411compartió una citahace 3 años
    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).
    На происходящее также можно взглянуть иначе: если вы часто выполняете со «строками» операции, которые интерпретируют их как мас
  • b2036955411compartió una citahace 3 años
    JavaScript определяет семь встроенных типов:
    • null
    • undefined
    • boolean
    • number
    • string
    • object
    • symbol — добавлен в ES6!
fb2epub
Arrastra y suelta tus archivos (no más de 5 por vez)