معاملات الإسناد في JavaScript

من موسوعة حسوب

معاملات الإسناد (assignment operators) تُسنِد القيمة التي على يمين المعامل إلى القيمة التي على يساره.

لمحة

معامل الإسناد البسيط هو رمز المساواة =، الذي يؤدي إلى إسناد القيمة التي على يمينه إلى القيمة التي على يساره، أي لو كان عندنا x = y فستُسنَد قيمة y إلى x؛ أما بقية معاملات الإسناد فهي اختصارٌ للعمليات القياسية كما هو واضح في الأقسام والأمثلة التالية.

الاسم المعامل المعنى
معامل الإسناد x = y x = y
معامل الإسناد والإضافة x += y x = x + y
معامل الإسناد والطرح x -= y x = x - y
معامل الإسناد والضرب x *= y x = x * y
معامل الإسناد والقسمة x /= y x = x / y
معامل الإسناد وحساب باقي القسمة x %= y x = x % y
معامل الإسناد ورفع العدد إلى القوة x **= y x = x ** y
معامل الإسناد والإزاحة إلى اليسار x <<= y x = x << y
معامل الإسناد والإزاحة إلى اليمين x >>= y x = x >> y
معامل الإسناد والإزاحة إلى اليمين دون الحفاظ على الإشارة x >>>= y x = x >>> y
معامل الإسناد وإجراء عملية AND الثنائية x &= y x = x & y
معامل الإسناد وإجراء عملية XOR الثنائية x ^= y x = x ^ y
معامل الإسناد وإجراء عملية OR الثنائية x |= y x = x | y

معامل الإسناد

معامل الإسناد البسيطة يُسنِد قيمةً (بعد تقديرها) إلى متغيرٍ، ومن الممكن إنشاء سلسلة من عمليات الإسناد لإسناد قيمة واحدة إلى عدِّة متغيرات (راجع قسم الأمثلة أدناه).

البنية العامة

x = y

أمثلة

// لتكن لدينا المتغيرات الآتية
//  x = 5
//  y = 10
//  z = 25

x = y     // x: 10
x = y = z // x, y, z: 25

معامل الإسناد والجمع

معامل الإسناد والجمع يُضيف قيمة ما على يمينه إلى قيمة المتغير ثم يُسنِد الناتج إلى المتغير، ويُحدِّد نوعا القيمتين سلوك معامل الإسناد والجمع، راجع صفحة معامل الجمع لمزيدٍ من المعلومات.

البنية العامة

x += y // x  = x + y

أمثلة

// لتكن لدينا المتغيرات الآتية
//  foo = 'foo'
//  bar = 5
//  baz = true

// رقم + رقم -> عملية جمع
bar += 2 // 7

// رقم + قيمة منطقية -> عملية جمع
baz += 1 // 2

// قيمة منطقية + قيمة منطقية -> عملية جمع
baz += false // 1

// رقم + سلسلة نصية -> عملية إضافة
bar += 'foo' // "5foo"

// سلسلة نصية + قيمة منطقية -> عملية إضافة
foo += false // "foofalse"

// سلسلة نصية + سلسلة نصية -> عملية إضافة
foo += 'bar' // "foobar"

معامل الإسناد والطرح

معامل الإسناد والطرح يطرح قيمة ما على يمينه من قيمة المتغير ثم يُسنِد الناتج إلى المتغير، راجع صفحة معامل الطرح لمزيدٍ من المعلومات.

البنية العامة

x -= y // x  = x - y

أمثلة

// لتكن لدينا المتغيرات الآتية
//  bar = 5

bar -= 2     // 3
bar -= 'foo' // NaN

معامل الإسناد والضرب

معامل الإسناد والضرب يضرب قيمة ما على يمينه بقيمة المتغير ثم يُسنِد الناتج إلى المتغير، راجع صفحة معامل الضرب لمزيدٍ من المعلومات.

البنية العامة

x *= y // x  = x * y

أمثلة

// لتكن لدينا المتغيرات الآتية
// bar = 5

bar *= 2     // 10
bar *= 'foo' // NaN

معامل الإسناد والقسمة

معامل الإسناد والقسمة يقسم قيمة المتغير على قيمة ما على يمينه ثم يُسنِد الناتج إلى المتغير، راجع صفحة معامل القسمة لمزيدٍ من المعلومات.

البنية العامة

x /= y // x  = x / y

أمثلة

// لتكن لدينا المتغيرات الآتية
// bar = 5

bar *= 2     // 10
bar *= 'foo' // NaN

معامل الإسناد وحساب باقي القسمة

معامل الإسناد وحساب باقي القسمة يقسم قيمة المتغير على قيمة ما على يمينه ثم يُسنِد باقي الناتج إلى المتغير، راجع صفحة معامل باقي القسمة لمزيدٍ من المعلومات.

البنية العامة

x %= y // x  = x % y

أمثلة

// لتكن لدينا المتغيرات الآتية
// bar = 5

bar %= 2     // 1
bar %= 'foo' // NaN
bar %= 0     // NaN

معامل الإسناد ورفع العدد إلى قوة

معامل الإسناد ورفع العدد إلى قوة يرفع قيمة المتغير إلى قوة قيمة ما على يمينه ثم يُسنِد الناتج إلى المتغير، راجع صفحة معامل قوة العدد لمزيدٍ من المعلومات.

لاحظ أنَّ دعم هذا المعامل ما يزال ضعيفًا، إذ أُضيف في إصدار ECMAScript 2016 (أي ES7)، لذا انظر إلى دعم المتصفحات قبل استعماله.

البنية العامة

x **= y // x  = x ** y

أمثلة

// لتكن لدينا المتغيرات الآتية
// bar = 5

bar **= 2     // 25
bar **= 'foo' // NaN

معامل الإسناد والإزاحة إلى اليسار

معامل الإسناد والإزاحة إلى اليسار يؤدي إلى إزاحة بتات المتغير إلى اليسار بالمقدار المحدد ثم يُسنِد الناتج إلى المتغير. راجع صفحة معامل الإزاحة إلى اليسار لمزيدٍ من المعلومات.

البنية العامة

x <<= y // x  = x << y

أمثلة

var bar = 5; //  (00000000000000000000000000000101)
bar <<= 2; // 20 (00000000000000000000000000010100)

معامل الإسناد والإزاحة إلى اليمين

معامل الإسناد والإزاحة إلى اليمين يؤدي إلى إزاحة بتات المتغير إلى اليمين بالمقدار المحدد ثم يُسنِد الناتج إلى المتغير. راجع صفحة معامل الإزاحة إلى اليمين لمزيدٍ من المعلومات.

البنية العامة

x >>= y  // x  = x >> y

أمثلة

var bar = 5; //   (00000000000000000000000000000101)
bar >>= 2;   // 1 (00000000000000000000000000000001)

var bar -5; //    (-00000000000000000000000000000101)
bar >>= 2;  // -2 (-00000000000000000000000000000010)

معامل الإسناد والإزاحة إلى اليمين دون الحفاظ على الإشارة

معامل الإسناد والإزاحة إلى اليمين دون الحفاظ على الإشارة يؤدي إلى إزاحة بتات المتغير إلى اليمين بالمقدار المحدد دون الحفاظ على إشارة العدد ثم يُسنِد الناتج إلى المتغير. راجع صفحة معامل الإزاحة إلى اليمين دون الحفاظ على الإشارة لمزيدٍ من المعلومات.

البنية العامة

x >>>= y  // x  = x >>> y

أمثلة

var bar = 5; //   (00000000000000000000000000000101)
bar >>>= 2;  // 1 (00000000000000000000000000000001)

var bar = -5;          // (-00000000000000000000000000000101)
bar >>>= 2;  // 1073741822 (00111111111111111111111111111110)

معامل الإسناد وإجراء عملية AND الثنائية

معامل الإسناد وإجراء عملية AND الثنائية يؤدي إلى استخدام التمثيل الثنائي للقيمتين وإجراء العملية AND عليهما ثم يُسنِد الناتج إلى المتغير. راجع صفحة المعامل AND لمزيدٍ من المعلومات.

البنية العامة

x &= y  // x  = x & y

أمثلة

var bar = 5;
// 5:     00000000000000000000000000000101
// 2:     00000000000000000000000000000010
bar &= 2; // 0

معامل الإسناد وإجراء عملية XOR الثنائية

معامل الإسناد وإجراء عملية XOR الثنائية يؤدي استخدام التمثيل الثنائي للقيمتين وإجراء العملية XOR عليهما ثم يُسنِد الناتج إلى المتغير. راجع صفحة المعامل XOR لمزيدٍ من المعلومات.

البنية العامة

x ^= y  // x  = x ^ y

أمثلة

var bar = 5;
bar ^= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

معامل الإسناد وإجراء عملية OR الثنائية

معامل الإسناد وإجراء عملية OR الثنائية يؤدي استخدام التمثيل الثنائي للقيمتين وإجراء العملية OR عليهما ثم يُسنِد الناتج إلى المتغير. راجع صفحة المعامل OR لمزيدٍ من المعلومات.

البنية العامة

x |= y  // x  = x | y

أمثلة

var bar = 5;
bar |= 2; // 7
// 5: 00000000000000000000000000000101
// 2: 00000000000000000000000000000010
// -----------------------------------
// 7: 00000000000000000000000000000111

أمثلة

في بعض الحالات الغريبة لا يكون فيها معامل الإسناد (مثل x += y) مطابقًا للتعبير الطويل الذي يختصره (أي x = x + y) وذلك عندما تكون القيمة التي على يسار معامل الإسناد تحتوي على معامل إسناد آخر، لاحظ كيف ستختلف القيمة هنا بين الشكلين، وذلك لأنَّ قيمة المتغير i ستُقدَّر مرتين في التعبير الثاني:

a[i++] += 5         // ستقدر قيمة المتغير مرة واحدة
a[i++] = a[i++] + 5 // ستقدر قيمة المتغير مرتين

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم
قوة العدد 52 52 غير مدعومة نعم ؟

مصادر ومواصفات