Mesusjk
4 سال پیش توسط Mesusjk مطرح شد
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 با هربار کلیک، اجرا میشه.


ثبت پرسش جدید
محمد مهدی
@MohammadMahdi 4 سال پیش آپدیت شد
0

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

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


Mesusjk
تخصص : برنامه نویس جنگو و پایتون
@Mesusjk 4 سال پیش مطرح شد
0

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


محمد مهدی
@MohammadMahdi 4 سال پیش مطرح شد
میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 4 سال پیش مطرح شد
0

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


Mesusjk
تخصص : برنامه نویس جنگو و پایتون
@Mesusjk 4 سال پیش مطرح شد
0

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

swapTurn(circleTurn)

@MohammadMahdi @milad


محمد مهدی
@MohammadMahdi 4 سال پیش مطرح شد
0

@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 بگیرید دستتون میاد.


میلاد-م
تخصص : توسعه‌دهنده رابط کاربری - Fron...
@milad 4 سال پیش مطرح شد
0

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


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

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