تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ همایون
سوالات فنی در مورد تعداد اعضای آرایه, نوع داده و...
جامعه جاوا اسکریپت ایجاد شده در ۲۱ شهریور ۱۴۰۰

سلام. به 2 قطعه کد اول و خروجی هر دو در JavaScript و PHP توجه کنید. سوال اول اینکه چرا تعداد اعضای آرایه در JavaScript و PHP قبل از اضافه کردن مقدار جدید به آرایه یکسانه ولی بعد از اضافه کردن, خروجی هر دو متفاوت از هم میشه؟ موقع اضافه کردن مقدار جدید خودم عمدا +1 کردم(carsLength + 1). PHP اون Index که وجود نداره رو جزو اعضای آرایه حساب نمیکنه و صرفا از روی تعداد واقعی اعضای آرایه شمارش میکنه. ولی JavaScript یه جورایی انگار آخرین Index آرایه رو میگیره و یکی بهش اضافه می‌کنه.

و به قطعه کد 3 توجه کنید. سوال دوم در مورد نوع داده هست. چرا نوع داده آرایه رو هم آرایه و هم شیء در نظر میگیره؟

 

و به قطعه کد 4 توجه کنید. سوال سوم در مورد Index به صورت Associative در آرایه هاست. توی JavaScript آرایه‌ها Index به صورت انجمنی ندارن طبق ES6. پس چرا وقتی Index به صورت Associative در نظر گرفته میشه. خطایی نمیده ولی مقدار رو جزو آرایه حساب میکنه و خروجی هم میده توی کنسول ولی موقعی که تعداد اعضای آرایه رو میگیرم جزو آرایه حساب نمیکنه؟ در مبحث شیء گرایی موقعی که یه Property از شیء رو می‌خوایم خروجی بگیریم میشه با استفاده از Square Brackets و نام اون Property به صورت رشته, مقدار رو خروجی بگیریم. چرا؟

var cars = ['BMW', 'Tesla', 'Audi'];
var carsLength = cars.length;
console.log(carsLength);
cars[carsLength + 1] = 'Hyundai';
console.log(cars);
console.log(cars.length);
// Console Output
3 // این قسمت
(5) ["BMW", "Tesla", "Audi", empty, "Hyundai"]
		0: "BMW"
		1: "Tesla"
		2: "Audi"
		4: "Hyundai" // این قسمت
		length: 5
		[[Prototype]]: Array(0)
5 // این قسمت
$cars = array('BMW', 'Tesla', 'Audi');
$cars_count = count($cars);;
echo "$cars_count <br>";
$cars[$cars_count + 1] = 'Hyundai';
var_dump($cars);
echo '<br>' . count($cars);
// Output
3 // این قسمت
array(4) {
  [0]=>
  string(3) "BMW"
  [1]=>
  string(5) "Tesla"
  [2]=>
  string(4) "Audi"
  [4]=> 
  string(7) "Hyundai"// این قسمت
}
4 // این قسمت
console.log(cars instanceof Array);
console.log(cars instanceof Object);
// Output
true // What?
true // What?
cars['New-Car'] = 'KIA';
console.log(cars);
console.log(cars.length);
// Output What?
(5) ["BMW", "Tesla", "Audi", empty, "Hyundai", New-Car: "KIA"]
	0: "BMW"
	1: "Tesla"
	2: "Audi"
	4: "Hyundai"
	New-Car: "KIA"
	length: 5
	[[Prototype]]: Array(0)
5 // What?

 

سلام

وقت به خیر

چندتا سوال تو یه تاپیک؟! :))

 

سوال اول: مربوط به مفهومی به نام holes در آرایه‌های جاوا اسکریپت میشه در واقع جاو ااسکیریپت میتونه در آرایه ایندکس هایی فاقد مقدار داشته باشه و وقتی شما اینکار را میکنید اون ایندکس قبلی هم init میشه

برای اطلاعات بیشتر این مقاله را بخونید https://betterprogramming.pub/what-are-holes-in-arrays-3ac5fcbcd1c

 

سوال دوم: در این مورد در یکی از جلسات مفصل توضیح دادم

این کد را هم تست کنید:
 

var test = "hello";
console.log(typeof test);
console.log(test instanceof String);
console.log(test instanceof Object);

 

سوال آخر را متوجه نشدم!

مهرداد دادخواه ۳۰ شهریور ۱۴۰۰، ۱۴:۰۲