راکت

متوجه نشدن یک کد

7 پاسخ

سلام به همگی. یه مشکل درمورد کد زیر دارم. اگه میشه برام توضیحش بدید.
میخوام بدونم تابع swapTurn دقیقا چه کاری رو انجام میده.

const X_CLASS = "x", CIRCLE_CLASS = "circle";
let circleTurn;

function handleClick(e) {
    const currentClass = circleTurn ? CIRCLE_CLASS : X_CLASS;
    swapTurn();
}

function swapTurn() {
    circleTurn = !circleTurn;
}

اینو هم بگم که این تابع handleClick با هربار کلیک، اجرا میشه.

Mesusjk
Mesusjk
@Mesusjk
ثبت پرسش جدید

پاسخ‌ها

7
محمد مهدی
محمد مهدی
@MohammadMahdi

@amirs3276har
این طور که داخل تابع ()swapTurn نشون میده، circleTurn هر چی باشه رو نات میکنه ینی اگه true باشه رو false میکنه و بالعکس و داخل خودش میریزه.
و در این handleClick تابع با توجه به true بودن CIRCLECLASS :circleTurn رو داخل currentClass میریزه و در صورت false بودن XCLASS رو داخل currentClass میریزه.

و اینکه حالا کدومش اجرا میشه بستگی داره که مقدر اولیه circleTurn چی باشه.

Mesusjk
Mesusjk
@Mesusjk

تخصص: برنامه نویس جنگو و پایتون

@MohammadMahdi یعنی همونطور که گفتید، اگه true باشه، false میشه و اگه false باشه، true میشه؟ یعنی مثل یه toggle عمل میکنه؟

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

محمد مهدی
محمد مهدی
@MohammadMahdi
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

با هر بار صدا زدن تابع مورد نظر، مقدار متغیر circleTurn که صحیح/غلط هستش رو، معکوس میکنه.

Mesusjk
Mesusjk
@Mesusjk

تخصص: برنامه نویس جنگو و پایتون

بی زحمت، یه سوال دیگه هم دارم. چرا موقع فراخوانی swapturn، بهش ورودی نداد؟ اینطوری:

swapTurn(circleTurn)

@MohammadMahdi @milad

محمد مهدی
محمد مهدی
@MohammadMahdi

@amirs3276har
چون متغییر circleTurn خارج توابع تعریف کردیم، شما اگه به این صورت عمل کنید:

const X_CLASS = "x", CIRCLE_CLASS = "circle";
let circleTurn = true;

function handleClick() {
    const currentClass = circleTurn ? CIRCLE_CLASS : X_CLASS;
    swapTurn(circleTurn);
    console.log(currentClass);
}

function swapTurn(circleTurn) {
    circleTurn = !circleTurn;
}

حالا اگه تابع handleClick رو فراخونی کنید دیگه اون متغییر بیرونی مقدارش تغییر نمیکنه و همیشه شرط به حالت true هست.

یه نکته همیشه خودتون از اون مقداری میخواید ببینید چطوری عمل میکنه یه console.log بگیرید دستتون میاد.

میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

متغیر circleTurn بصورت سراسری تعریف شده، برای همین نیازی نیست که هنگام صدا زدن تابع swapTurn، این متغیر بعنوان ورودی بهش فرستاده بشه.
در واقع این موارد با توجه به منطق برنامه و کاربردی که مدنظر برنامه نویس هستش انتخاب میشه.

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

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