الفرق بين المراجعتين لصفحة: «JavaScript/String/repeat»
لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
سطر 90: | سطر 90: | ||
* مسودة المعيار [https://tc39.github.io/ecma262/#sec-string.prototype.repeat ECMAScript Latest Draft]. | * مسودة المعيار [https://tc39.github.io/ecma262/#sec-string.prototype.repeat ECMAScript Latest Draft]. | ||
* معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype.repeat ECMAScript 2015 (6th Edition)]. | * معيار [http://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype.repeat ECMAScript 2015 (6th Edition)]. | ||
[[تصنيف:JavaScript]] | [[تصنيف:JavaScript|{{SUBPAGENAME}}]] | ||
[[تصنيف:JavaScript Global Objects]] | [[تصنيف:JavaScript Global Objects|{{SUBPAGENAME}}]] | ||
[[تصنيف:JavaScript String]] | [[تصنيف:JavaScript String|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 15:36، 28 يناير 2018
الدالة String.prototype.repeat()
تُنشِئ سلسلةً نصيةً جديدةً تحتوي على العدد المُحدَّد من النسخ من السلسلة النصية التي استدعيت عليها، وراء بعضها بعضًا.
البنية العامة
str.repeat(count);
count
عدد صحيح بين 0 و زائد لانهاية، يُشير إلى عدد المرات التي يجب تكرار السلسلة النصية فيها لإنشاء السلسلة النصية الجديدة.
القيمة المعادة
سلسلة نصية التي تتألف من تكرار للسلسلة النصية المعطية لعدد مُحدَّد من المرات.
الاستثناءات
سيرمى الاستثناء RangeError
إذا كان الوسيط المُمرَّر عددًا سالبًا.
ويجب أن يكون الوسيط أقل من اللانهاية (Infinity
) ولا يؤدي إلى تجاوز الطول الأقصى للسلاسل النصية؛ وإلا فسيرمى الاستثناء RangeError
أيضًا.
أمثلة
'abc'.repeat(-1); // RangeError
'abc'.repeat(0); // ''
'abc'.repeat(1); // 'abc'
'abc'.repeat(2); // 'abcabc'
'abc'.repeat(3.5); // 'abcabcabc' (سيحوّل الوسيط إلى عدد صحيح)
'abc'.repeat(1/0); // RangeError
({ toString: () => 'abc', repeat: String.prototype.repeat }).repeat(2);
// 'abcabc' (repeat() is a generic method)
تعويض نقص دعم المتصفحات
أُضيفَت هذه الدالة إلى معيار ECMAScript 2015، وقد لا تتوافر في جميع المتصفحات بعد، لكن يمكنك استخدام الشيفرة الآتية لتعريفها في المتصفحات التي لا تدعمها:
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 '';
}
// Ensuring count is a 31-bit integer allows us to heavily optimize the
// main part. But anyway, most current (August 2014) browsers can't handle
// strings 1 << 28 chars or longer, so:
if (str.length * count >= 1 << 28) {
throw new RangeError('repeat count must not overflow maximum string size');
}
var rpt = '';
for (var i = 0; i < count; i++) {
rpt += str;
}
return rpt;
}
}
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | 41 | 24 | غير مدعومة | نعم | 9 |
على النقيض من متصفح IE، يدعم Edge هذه الميزة.
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).