اذهب إلى المحتوى
  • 0

javascript | ما الذي يعنيه هذا الكود [...Array(5).keys().] ؟

مصطفى اوريك

السؤال

Recommended Posts

  • 1

تلك الثﻻث نقاط يسمون بالspread syntax وظيفتهم أنهم يقومون بنشر(spread) عناصر المُكرر(iterator) , فمثلاً عند تنفيذ الكود في مثالك , سيتم أولاً عند تنفيذ ال

Array(5).keys()

بإنشاء مُكرر (iterator) مكون من الأرقام من صفر إلى أربعة

وعﻻمة الspread(...) ستقوم بنشر عناصر الiteratorدون الحاجة أن تمر عليهم عنصر عنصر فيتحول المُكرر(iterator) إلى العناصر (0 1 2 3 4) , ومن ثم يتم ضم تلك العناصر في مصفوفة, وللتوضيح أكثر جرب أن تقوم بتنفيذ الشفرة البرمجية

console.log(Array(5).keys())

ستﻻحظة طباعة الأتي في الشاشة
	Array Iterator {}
		[[Prototype]]: Array Iterator
			next: ƒ next()
			Symbol(Symbol.toStringTag): "Array Iterator"

عند طباعة الشفرة التالية نﻻحظ تغير ناتج الطباعة

console.log(...Array(5).keys());


هنا يُصبح ناتج الطباعة 
0 1 2 3 4

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الثلاث نقط تسمى صيغة النشر (Spread Syntax)

ببساطة فكر بها أنها تنشر محتويات ما بعدها (بشرط أن يكون من النوع iterator)

...[1, 2, 3]
// 1, 2, 3

.. [[1,2,3], {name: 'ahmed'}, 'abc']
// [1,2,3], {name: 'ahmed'}, 'abc'

يستفاد منها عند تعريف مصفوفة، ونريد نشر عناصر مصفوفة داخلها 

const arr = [1, 2, 3]

console.log([...arr, 4, 5, 6])
// [1, 2, 3, 4, 5, 6]

كما نشر المصفوفات، يستفاد منها لنشر الأغراض أيضا عند تعريف غرض

const obj = {name: 'Ahmed'};

console.log({ ...obj, age: 25 })
// { name: 'Ahmed', age: 25 } 

يستفاد منها عند تمرير معاملات لتابع، ولديك المعاملات في مصفوفة تقوم بنشرها ثم تمريرها كالتالي

function sum(x, y, z) {
  return x + y + z;
}

const numbers = [1, 2, 3];

console.log(sum(...numbers));
// 6

// الاستدعاء السابق يكافئ الاستدعاء التالي
console.log(sum(1, 2, 3));
// 6

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...