Mahdi
3 سال پیش توسط Mahdi مطرح شد
8 پاسخ

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

سلام دوستان من داشتم حلقه ی 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 شده!!!


ثبت پرسش جدید
سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش آپدیت شد
1

سلام دوست عزیز شما یک متد رو صدا می زنید بعد اون متد یک مقداری رو 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
تخصص : :) عاشق js و php (:
@mahdisamadiyan82 3 سال پیش مطرح شد
0

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
@saman1111 3 سال پیش مطرح شد
1

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


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش آپدیت شد
1

سلام دوست عزیز شما یک متد رو صدا می زنید بعد اون متد یک مقداری رو 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 هم چاپ می کند که در این لینک توضیح داده شده.


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
1

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


Mahdi
تخصص : :) عاشق js و php (:
@mahdisamadiyan82 3 سال پیش مطرح شد
0

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


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

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


محمدصادق عبداللهی
تخصص : junior full stack developer
@mimsadAlef 3 سال پیش مطرح شد
2

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


Mahdi
تخصص : :) عاشق js و php (:
@mahdisamadiyan82 3 سال پیش مطرح شد
0

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


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

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