★ wanayoo — archive 1999 https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/repeatNouvelle recherche | Portail wanayoo
mozilla
Your Search Results

    String.prototype.repeat()

    Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
    Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.

    Сводка

    Метод repeat() конструирует и возвращает новую строку, содержащую указанное количество соединённых вместе копий строки, на которой он был вызван.

    Синтаксис

    str.repeat(count)

    Параметры

    count
    Целое число от 0 до +∞: [0, +∞), определяющее число повторений строки во вновь создаваемой и возвращаемой строке.

    Выбрасываемые исключения

    RangeError
    Число повторений должно быть положительным и меньше бесконечности.

    Примеры

    'абв'.repeat(-1);   // RangeError
    'абв'.repeat(0);    // ''
    'абв'.repeat(1);    // 'абв'
    'абв'.repeat(2);    // 'абвабв'
    'абв'.repeat(3.5);  // 'абвабвабв' (количество будет преобразовано в целое число)
    'абв'.repeat(1/0);  // RangeError
    
    ({ toString: () => 'абв', repeat: String.prototype.repeat }).repeat(2);
    // 'абвабв' (метод repeat() является обобщёным методом)
    

    Полифилл

    Этот метод был добавлен к спецификации ECMAScript 6 и может быть доступен ещё не во всех реализациях JavaScript. Однако, вы можете легко эмулировать этот метод при помощи следующего кода:

    if (!String.prototype.repeat) {
      String.prototype.repeat = function(count) {
        'use strict';
        if (this == null) {
          throw new TypeError('can\'t convert ' + this + ' to object');
        }
        var str = '' + this;
        count = +count;
        if (count != count) {
          count = 0;
        }
        if (count < 0) {
          throw new RangeError('repeat count must be non-negative');
        }
        if (count == Infinity) {
          throw new RangeError('repeat count must be less than infinity');
        }
        count = Math.floor(count);
        if (str.length == 0 || count == 0) {
          return '';
        }
        // Обеспечение того, что count является 31-битным целым числом, позволяет нам значительно
        // соптимизировать главную часть функции. Впрочем, большинство современных (на август
        // 2014 года) браузеров не обрабатывают строки, длиннее 1 << 28 символов, так что:
        if (str.length * count >= 1 << 28) {
          throw new RangeError('repeat count must not overflow maximum string size');
        }
        var rpt = '';
        for (;;) {
          if ((count & 1) == 1) {
            rpt += str;
          }
          count >>>= 1;
          if (count == 0) {
            break;
          }
          str += str;
        }
        return rpt;
      }
    }
    

    Спецификации

    Спецификация Статус Комментарии
    ECMAScript 6 (ECMA-262)
    Определение 'String.prototype.repeat' в этой спецификации.
    Черновик Изначальное определение.

    Совместимость с браузерами

    Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Базовая поддержка 41 24 (24) Нет Нет Нет
    Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Базовая поддержка Нет 36 (через флаг) 24.0 (24) Нет Нет Нет

    Метки документа и участники

    Contributors to this page: Mingun, dtretyakov
    Обновлялась последний раз: Mingun,
    Скрыть боковую панель