سلام وقتتون بخیر
من الان به یه موضوعی برخورد کردم که به نظرم به صورت منطقی نباید مشکلی داشته باشه اما مشکل داره!
من با کلمه کلیدی let تو دو تا case مجزا از یک switch یک متغیر همنام تعریف کردم . به این صورت :
switch ('foo') {
case 'foo' :
let message = 'This is test'
break
case 'bar' :
let message = 'This is another test!'
break
}
با وجود اینکه امکان نداره هر دو case با هم اجرا بشن اما بازم وباستورم زیر تعریف متغیر های منو قرمز کرده و به نظر ارور وجود داره
اما به نظر من منطقا نباید هیچ مشکلی باشه چون اولا متغیر message توی بلاک خاص خودش تعریف شده و ارتباطی با هم ندارن . دوما اصلا هیچ حالتی پیش نمیاد که هر دو case با هم بخواد اجرا بشه!
اما وباستورم برای من خطا گرفته و متن ارور هم اینه :
مشکل کجاست به نظرتون؟
سلام وقت بخیر
شما داخل یک scope دوتا متغیر message تعریف کردید، کل case های شما داخل یک Scope هست.
@behzad.azizan1991
switch ("foo") {
case "foo": {
let message = "This is test";
break;
}
case "bar": {
let message = "This is another test!";
break;
}
}
سلام
همانطور که دوستمون گفتم کل switch یک scope محسوب میشه و اگر مجبورید از متغیر همنام استفاده کنید باید به ازای هر case یک تابع بنویسید و تابع را در case فراخونی کنید
من معمولا عملیات تعریف متغیر (declairation) متغیر رو بیرون switch انجام میدم و مقداردهیش (assignment) رو در داخل هر case به تناسب شرایط.
let message;
switch ('foo') {
case 'foo' :
message = 'This is test';
break;
case 'bar' :
message = 'This is another test!';
break;
default:
message = 'Unknown';
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟