سلام به همگی. یه مشکل درمورد کد زیر دارم. اگه میشه برام توضیحش بدید.
میخوام بدونم تابع 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 با هربار کلیک، اجرا میشه.
@amirs3276har
این طور که داخل تابع ()swapTurn نشون میده، circleTurn هر چی باشه رو نات میکنه ینی اگه true باشه رو false میکنه و بالعکس و داخل خودش میریزه.
و در این handleClick تابع با توجه به true بودن CIRCLECLASS :circleTurn رو داخل currentClass میریزه و در صورت false بودن XCLASS رو داخل currentClass میریزه.
و اینکه حالا کدومش اجرا میشه بستگی داره که مقدر اولیه circleTurn چی باشه.
@MohammadMahdi یعنی همونطور که گفتید، اگه true باشه، false میشه و اگه false باشه، true میشه؟ یعنی مثل یه toggle عمل میکنه؟
با هر بار صدا زدن تابع مورد نظر، مقدار متغیر circleTurn که صحیح/غلط هستش رو، معکوس میکنه.
بی زحمت، یه سوال دیگه هم دارم. چرا موقع فراخوانی swapturn، بهش ورودی نداد؟ اینطوری:
swapTurn(circleTurn)
@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 بگیرید دستتون میاد.
متغیر circleTurn بصورت سراسری تعریف شده، برای همین نیازی نیست که هنگام صدا زدن تابع swapTurn، این متغیر بعنوان ورودی بهش فرستاده بشه.
در واقع این موارد با توجه به منطق برنامه و کاربردی که مدنظر برنامه نویس هستش انتخاب میشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟