راکت
حل شده

مشکل عجیب for in : واقعا عجیبه

8 پاسخ

سلام دوستان من داشتم حلقه ی for in رو واسه پیمایش آبجکت ها امتحان می کردم این حلقه متاسفانه قابلیت اجرای متود آبجکت رو نداره واسه همین از یک کاندیشن ترنری استفاده کردم هر وقت تایپ یک key فانکشن شد بتونه متود رو اجرا کنه.
کد :

    var myobj = {
        name: "mahdi", lastname: "sam", age: 16, sam: function () {
           console.log(`my name is ${ this.name } and my last name is ${ this.lastname }`);
        }
    }
    for (var key in myobj) {
        console.log(typeof myobj[key] == "function" ? myobj[key]():myobj[key]);
    }

با کمال تعجب عبارت زیر برام لاگ گرفته شد :

mahdi
sam
16
my name is mahdi and my last name is sam
undefined

خوب اینکارم جواب داد و متود اجرا شد ولی توی آخرین لاین زده undefined مگه ما ایندکس پنجم داریم آخه توی آبجکت :| ؟
خوب دوستان کسی میدونه چرا undefined شده!!!

ثبت پرسش جدید

پاسخ‌ها

8
سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

بهترین پاسخ

سلام دوست عزیز شما یک متد رو صدا می زنید بعد اون متد یک مقداری رو log می گیره ( برنمی گردونه) به همین دلیل javascript مقدار که برمی گردونه undefined هست. اگر به این شکل استفاده کنید درست می شود.

    var myobj = {
        name: "mahdi", lastname: "sam", age: 16, sam: function () {
           return (`my name is ${ this.name } and my last name is ${ this.lastname }`);
        }
    }
    for (var key in myobj) {
        console.log(typeof myobj[key] == "function" ? myobj[key]():myobj[key]);
    }

@mahdisamadiyan82 البته جاواسکریپت یکسری undefined هم چاپ می کند که در این لینک توضیح داده شده.

Mahdi
Mahdi
@mahdisamadiyan82

تخصص: :) عاشق js و php (:

user-avatar
سبحان مولایی
@websaz

user-avatar
َامیر علی
@ajdar9667

user-avatar
گمنام
@gomnam

user-avatar
رضا جهانگیر
@rezajahangir

user-avatar
Saman
@samanzdev

user-avatar
moha li
@mohaligateway

user-avatar
حسام موسوی
@hesammousavi

user-avatar
رضا پارسیان
@Rp76

user-avatar
محمدصادق عبداللهی
@mimsadAlef

user-avatar
سیدعلی موسوی
@juza66

😐😑

saman
saman
@saman1111

سلام
توی کنسول مرورگر اجرا کردید ؟
اون مقدار undefined مربوط به حلقه‌تون نیست و در واقع مقدار for هست که نوشته شده
همون چهارتای اول مربوط به حلقه‌تون هستن

شاید پاسخ شما همین‌جا باشد

رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

ممنون از وقتی که گذاشتی و منو هم تگ کردی

Mahdi
Mahdi
@mahdisamadiyan82

تخصص: :) عاشق js و php (:

سلام از هر دو پاسخ عزیزان متشکرم کاملا عالی توضیح دادید :))
@websaz @saman1111

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

خواهش می کنم لطفا پاسخ برتر رو انتخاب کنید. ممنون

محمدصادق عبداللهی
محمدصادق عبداللهی
@mimsadAlef

تخصص: junior full stack developer

ممنون که منو تگ کردید 😐
توی لیست افراد برتر بودنم درد سر داره ها😁

Mahdi
Mahdi
@mahdisamadiyan82

تخصص: :) عاشق js و php (:

حاجی نگران نباش حالا حالا ها باهات کار دارم 😂💙
@mimsadAlef

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام