سوال : در مورد متغير NaN

poorkooshki

Member
سلام
*****

به نمونه زير توجه كنيد .

کد:
var my_var = 114-"MMP";

trace(my_var);

//مي شه NaN خروجي ما 

// شرط كار نمي كنه

if (my_var == NaN) {

	trace("it is NaN");

}

حالا سوالم اينه كه چرا شرط كار نمي كنه ؟ آيا كدم رو اشتباه نوشتم ؟

موفق باشيد
 

naeim_crack

Active Member
سلام
این کدی که شما نوشتی کا ملا اشتباه است چون الان شرط شما مقدار undefined رو میره با مقدار شرط برسی می کنه چون trace یه مقدار رو تو خروجی میده و برای متغییر نمی تونه بفرسته دلیل اینکه کد بالا کا ر نمیکنه همینه ولی خود فلش برای تست کردن NaN یه دستور به اسم isNaN داره که با جواب True و False می تونی بفهمی متغیر شما NaN شده یا نه حالا یگه زیادی توضیح نمیدم
کد رو به شکل زیر عوض کن درست میشه
[
کد:
var my_var = 114-"hh";
if (isNaN(my_var) == true) {
   trace("it is NaN");
}
موفق باشید
 

poorkooshki

Member
سلام
*****

آقا نعيم اگه به گفته شما ( شرط مقدار undefined رو میره با مقدار شرط برسی می کنه ) پس بايد كد زير مقدار true رو برگردونه و شرط درست باشه ؛ ولي اينطور نيست .

کد:
var myvar = 114-"mmp";

if (myvar == undefined) {
	
	trace("شرط برقرار شده");
	
}

پس متغير ما undefined نيست بلكه typeof آن از نوع number شناخته مي شه :

کد:
var myvar = 114-"mmp";

if (typeof myvar == "number") {
	
	trace("typeof is number");
	
}

آقا نعيم در مورد اين گفته ( چون trace یه مقدار رو تو خروجی میده و برای متغییر نمی تونه بفرسته ) ميشه بيشتر توضيح بدي چون من اصلا متوجه نشدم .

موفق باشيد
 

naeim_crack

Active Member
شما این دستور رو امتحان کن خودت میفهمی
کد:
var myvar=114-"mmp";
x=trace(myvar);
trace(x);
اول می فهمی که مقدار undefined هستش
دوم دستور trace خوروجی خودش رو به ljyddv نمیده
سوم ,وقتی فلش برای این کار دستور مخصوصو داره مگه مجبوری دنبال یه دستور که کار کردن باهاش سخته می گردی
البته بدون این دستور هم میشه ولی باید روش کارد که یه جوری که متغییر رو از trace بگیری
 

poorkooshki

Member
سلام
*****

اولا مقدار undefined نيست ؛ اين كدي هم كه شما در بالا نوشتيد دليلي بر اثبات حرفتون نمي شه چون هر مقدار صحيحي هم كه بجاي متغير myvar قرار بديم نتيجه همون undefined مي شه . ( در اصل خط دوم كدتون رو اشتباه نوشتيد )

کد:
var myvar = 114;

x = trace(myvar);

trace(x);

دوما در مورد اين گفتتون هم كه ( دستور trace خروجی خودش رو به متغير نمیده ) بايد بگم كه دستور trace اصلا خروجي نداره كه بخواد اونو به متغيري هم نسبت بده اين دستور فقط براي اينه كه عبارات داخل دو پرانتز رو ارزيابي كنه و به OutPut بفرسته .

سوما من فقط مي خواستم بدونم چرا وقتي خروجي يه متغيري NaN مي شه و اونو در دستور شرطيif مي زاريم و از حالت برابري ( == ) استفاده مي كنيم كار نمي كنه وگرنه خودم از قبل تابع isNaN رو مي دونستم .

کد:
var myvar = NaN;

if (myvar == NaN) {
	
	trace("اين شرط انجام نمي شه");
	
}

if (myvar != NaN) {
	
	trace("اين شرط انجام مي شه");
	
}

بهر حال موفق باشيد
 

naeim_crack

Active Member
اولا خروجی همون undifined هستش منم گفتم که دستور trace خروجی به متغییر نمی تونه بفرسته وقتس هم شما trace رو در سرط می زارید مثل همینه که همون متغییر که مساوی trace قرار دادیم رو در شرط بزاردی و مقدار همون undifined هستش
در ضمت اگه شما دستور isNaN رو بلد بودید هیچ وقت شرط بالا رو برای انجام کارتون به اون شکل نمی نوشتید اگه بلد بودی پس چرا این تاپیک رو زدی

شما در کل این تاپیک 2 تا سوال کردید
1- به چه شکل مقدار trace رو به متغییر بیدم
2- به چه شکل trace رو در شرط بزارم
هر دوتا هم بلد نبودی
حالا که جوابتو گرفتی میگی بلدم


بابا وارد --------- بلد ------------ اخر فلش ::d
 

naeim_crack

Active Member
اقا من فکر نکنکم حرف بدی زدم باشم که به این آقا بر خورده
خوب یه چیزی رو اشتباه بلد بودی سوال پرسیدی منم هر چی بلد بودم جواب دادم
 

poorkooshki

Member
سلام
*****

آقا نعيم ( دوست عزيز ) ؛ قرار نيست اينجا به كسي بر بخوره ما فقط داريم با هم بحث مي كنيم .

نگاه كنيد شما مي گيد متغير myvar خروجيش undefined ميشه ؛ من مي گم ايطوري نيست پس يه نمونه كد مي نويسم اگه قبول نداشتيد شما نمونه كدي بنويسيد كه دليل بر حرفتون باشه .

کد:
var my_var;

trace(typeof my_var);

var myvar = 114-"MMP";

trace(typeof myvar);

من در كد بالا متغير my_var رو تعريف نكردم پس در OutPut اون رو تعريف نشده يا undefined شناخت ولي به متغير myvar يه مقداري ( البته براي مقادير رشته اي تنها بايد از عملگر + استفاده كرد - ولي اين يه مثال است) اختصاص داده شده كه اونو از undefined بودن خارج مي كنه و خروجي رو در عملگر typeof به صورت number و در trace كردن به صورت NaN نشون مي ده.

يه چيز ديگه شما نوشته بوديد كه ( وقتي هم شما trace رو در شرط می زارید مثل همینه که همون متغییر که مساوی trace قرار دادیم رو در شرط بزاردی و مقدار همون undifined هستش ) ؛ بايد بگم اشتباه گفتيد . يه مثال براي اثباتش بزن .

آقا نعيم من اصلا به عدد بودن يا عدد نبودن شرطم كاري نداشتم كه از تابع isNaN استفاده كنم من فقط با خود درست بودن شرط كار داشتم كه چرا مقدار true رو برنمي گردونه . ( اشتباه شما هم در همين جا بوده كه فكر مي كردين من اين تابع رو بلد نبودم )

اينم بگم كه در تاپيكهاي ديگه چيزهاي زيادي از ارسالهاي شما ياد گرفتم .

موفق باشي
 

naeim_crack

Active Member
سلام

عزیز دل برادر من کی گفتم مقدار myvar undefined هستش کد که من اون بالا گذاشتم ببین
من گفتم این کد undefined هستش

کد:
myvar=114-"mmc";
x=trace(myvar);
trace(x);
من اینو گفتم undefined هستش

در جواب سوال دوم
کد:
myvar=114-"mmc";
if(trace(myvar) == NaN)
{
// بازم این شرط اشباه هستش چون undefined  می ده 
{
دستور شرط که مقدار true و flase رو بر نمی گرونه

یا حق
 

poorkooshki

Member
سلام
*****

آقا نعيم ؛ چرا شما دستور trace رو كه اصلا خروجي نداره به يه متغير و يا در شرط استفاده مي كنيد . اينجوري كه شما استفاده مي كنيد جوابتون ربطي به عبارتهاي داخل دستور trace نداره و هميشه undefined ميشه .

کد:
myvar = 114-"mmc";

if (trace(myvar) == NaN) {
	
	// خواهد بود undefined اين شرط هميشه
	
	// نداره trace و ربطي به مقادير داخل دستور 
	
}

موفق باشيد
 

webkhan

Member
همانطور كه نعيم عزيز گفت براي تعيين اينكه يك متغيير NaN هست يا خير نمي توان متغيير را برابر با مقدار NaN قرار داد. ماكرومديا گفته از تابع isNaN استفاده كنين.
در ضمن :
کد:
var myvar= 114-"lok
"
از لحاظ Syntax اشتباه است. يك نامبر نمي شه از يه استرينك كم بشه. در فلش 7 روش درست نگارش اينه كه وقتي از var استفاده شد و متغيير معرفي گرديد نوع آن هم بايد مشخص شود.
کد:
var myvar:Numbar=112

هميشه براي اطمينان خاطر از اينكه متغيير مورد نظر كه از نوع نامبر هست با يك استرينگ يا نوع ديگر وارد محاسبات رياضي شدند يا خير از تابع isNaN استفاده كنين. اگه مقدار false رو برگرداند يعني محاسبات شما درست است.
 

poorkooshki

Member
سلام
*****

آقا نعيم از متغير NaN كه بگذريم شما تو اين تاپيك يه چيز ديگه اي هم مطرح كرديد كه براي من هنوز حل نشده و اون اينه كه گفته بوديد :

1- به چه شکل مقدار trace رو به متغییر بديم
2- به چه شکل trace رو در شرط بزارم

يكم در مورد اين گفتتون توضيح بديد .

ممنون
 

جدیدترین ارسال ها

بالا