• JavaScript программирование
    >var s = '0123456789abcdefghijklmnopqrstuvwxyz';
    >var i = 0;
    >var id;
    >while (i <= 8) {
    > id += s[Math.floor(Math.random() * s.length)];
    > i++;
    >}

    Что будет в начале строки которая будет содержатся в переменной id? undefined. Пример: undefined64ajtwym3. А если при объявлении переменной присвоить ей null, то в начале строки будет null. Крайне странно так как объявляя переменную ничего ей не присваивая ожидаешь что она будет пустая, но эта пустота превращается в undefined.

Replies (13)

  • @justonemore, читай спеку ;)
  • @justonemore, прикинь если в сях написать char *shit оно тоже не превратится в char ∗shit = ""
  • @justonemore, Будь это статически-типизированный язык, было бы разумное значение по умолчанию для string id; (id == "").

    В некоторых случаях было бы приятнее, если бы undefined и null при сериализации превращались в пустую строку. Но в целом это плохое поведение, которое даст трудно вылавливаемые баги.
  • @killy, было бы приятнее, если бы компьютер угадывал наши желания и вообще не надо было программировать
  • @justonemore, const s = '0123456789abcdefghijklmnopqrstuvwxyz';
    let rc = () => s[Math.floor(Math.random() * s.length)];
    let newId = (len) => Array(len).fill(null).map(x => rc()).join('');
    let id = newId(8);
  • @killy, Math.random().toString(33).substr(-8) ёпта. чё ты не как говнокодер
  • @lurker, Почему не 36?
  • @killy, чтобы gzip лучше пожал, сука
  • @lurker, ?
    Что он делает с xyz?
  • @killy, код в смысле. http transfer encoding
  • @lurker, Вот же ж гувно.
  • @justonemore, В православном PHP будет:
    <?php
    $a;
    echo "$a'asda2s'\n"

    asda2s

    В Python: TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
  • @justonemore, PHP — это сборник примеров как не надо делать.
    Python — это строго, динамически типизированный язык, тогда как JS — нестрого, динамически типизированный язык. Живи с этим.