အချက်အလက် အမျိုးအစားများ အား အလိုအလျောက် ပြောင်းလဲခြင်း
သင် သိပြီးဖြစ်သည့်အတိုင်း JavaScript ရှိ စာကြောင်းများကို ပုဒ်ဖြတ်များထဲသို့ ထည့်သွင်းသင့်သည်။ စာကြောင်း၏ စာလုံးအားလုံးသည် ဂဏန်းများ ဖြစ်နေသည့် အခြေအနေမျိုး ရှိနိုင်သည်။
javascriptlet a = '123';
ဤကိစ္စတွင် ကိန်းရှင် a သည်လည်း
စာကြောင်း တစ်ခုဖြစ်သော်လည်း အနည်းငယ် ခြားနားချက် ရှိသည်။
ခြားနားချက်၏ အဓိပ္ပါယ်မှာ ဤသို့ဖြစ်သည်- ဂဏန်းများပါသော စာကြောင်းတစ်ခုအပေါ် တစ်ခုခု သင်္ချာ လုပ်ဆောင်ချက် လုပ်ဆောင်လိုက်ပါက - ထိုလုပ်ဆောင်ချက်ကို စာကြောင်းများ အစစ်အမှန်မဟုတ်ဘဲ ဂဏန်းများ အစစ်အမှန်ရှိနေသည်ဟု ထင်မှတ်ကာ လုပ်ဆောင်မည်။
javascriptalert('2' * '3'); // 6 ကို ပြသမည်
ဤကိစ္စတွင် JavaScript သည် ကျွန်ုပ်တို့ စာကြောင်းများအတွက် ခွင့်မပြုသော်လည်း၊ ဂဏန်းများအတွက် ခွင့်ပြုထားသော လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ရန် ကြိုးစားနေသည်ကို တွေ့မြင်သည်။
သူသည် ကျွန်ုပ်တို့၏ စာကြောင်းများ - ပုဒ်ဖြတ်များအတွင်းရှိ ဂဏန်းများ ဖြစ်သည်ကိုလည်း တွေ့မြင်သည်။ ထို့ကြောင့် JavaScript သည် ထိုစာကြောင်းများကို ဂဏန်းများအဖြစ်သို့ အလိုအလျောက် ပြောင်းလဲပြီး ၎င်းတို့အပေါ် သက်ဆိုင်ရာ သင်္ချာ လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပေးသည်။
ဤသို့ လုပ်ဆောင်သည် မှာ ကျွန်ုပ်တို့၏ စာကြောင်းများထဲတွင်
ဂဏန်းများသာ ရှိမှသာဖြစ်သည်။ အကယ်၍ စာလုံးတစ်လုံး ပါဝင်လာပါက
- JavaScript သည် ထိုလုပ်ဆောင်ချက်ကို မမှန်ကန်ဟု ယူဆကာ
၎င်း၏ ရလဒ်အဖြစ် NaN တန်ဖိုးကို ဖန်တီးမည်။
javascriptalert('2' * '3s'); // NaN ကို ပြသမည်
ထို့အပြင်၊ အလိုအလျောက် ပြောင်းလဲခြင်း ဖြစ်ပေါ်သည်မှာ၊ လုပ်ဆောင်ချက်သည် သင်္ချာအရ မှန်ကန်ပြီး၊ စာကြောင်းများအတွက် ခွင့်မပြုထားသောအခါ ဖြစ်သည်။
ဥပမာအားဖြင့်၊ စာကြောင်းများကို မြှောက်၍မရ၊ စား၍မရ၊ နုတ်၍မရပေ (သို့သော် ဂဏန်းများကို ရနိုင်သည်)၊ ထို့ကြောင့် ထိုသို့သော လုပ်ဆောင်ချက်အားလုံးတွင် ဂဏန်းများပါသော စာကြောင်းများ ဂဏန်းများအဖြစ်သို့ အလိုအလျောက် ပြောင်းလဲခြင်း ဖြစ်ပေါ်မည်။
သို့ရာတွင်၊ စာကြောင်းများသည် ဂဏန်းများကဲ့သို့ပင်၊ အော်ပရေတာ + ကို အသုံးပြု၍
ပေါင်းထည့်နိုင်သည်။ ဆိုလိုသည်မှာ
ပေါင်းခြင်း ကိစ္စတွင် အလိုအလျောက် ပြောင်းလဲခြင်း
မဖြစ်ပေါ်ပါ။
javascriptlet a = '1' + '2';
alert(a); // '12' ကို ပြသမည် - စာကြောင်းများ ပေါင်းခြင်း ဖြစ်ပေါ်ခဲ့သည်
အကယ်၍ တစ်ဖက် ဂဏန်းဖြစ်ပြီး၊ အခြားတစ်ဖက် စာကြောင်းဖြစ်ပါက၊ အမြဲတမ်း စာကြောင်းက အနိုင်ရသည်။
javascriptlet a = 1 + '2';
alert(a); // '12' ကို ပြသမည်
ထိုသို့သော အခြေအနေများတွင် JavaScript သည်၊ ဆန့်ကျင်ဘက်အားဖြင့်၊ အလိုအလျောက် ဂဏန်းများကို စာကြောင်းများအဖြစ်သို့ ပြောင်းလဲပြီး စာကြောင်းများ ပေါင်းခြင်း လုပ်ဆောင်သည်။
သို့သော်၊ ထူးခြားချက်များ ရှိသည်၊ အကယ်၍ ပေါင်းစပ်ရမည့်အရာ နှစ်ခုထက် များပြားပါက- ဤကိစ္စတွင် သတ်မှတ်ထားသော အမျိုးအစားသို့ ပြောင်းလဲခြင်းသည် လုပ်ဆောင်ချက်များ လုပ်ဆောင်သည့် အစီအစဉ်ပေါ်တွင် မူတည်သည်။
အောက်ပါ ဥပမာတွင် အစပိုင်း၌ 2 နှင့် 3
ဂဏန်းများအဖြစ် ပေါင်းထည့်မည်၊ ထို့နောက် ရလဒ်ကို
စာကြောင်း '1' သို့ စာကြောင်း '5' အဖြစ် ထပ်ပေါင်းမည်၊
ထို့ကြောင့် နောက်ဆုံးတွင် စာကြောင်း '15' ရရှိမည်။
javascriptlet a = '1' + (2 + 3);
alert(a); // '15' ကို ပြသမည်
အကယ်၍ ကွင်းများကို ဖယ်ရှားလိုက်ပါက၊ အရာအားလုံးသည်
ဘယ်မှ ညာသို့ ပေါင်းထည့်သွားမည်။ ဆိုလိုသည်မှာ ပထမဦးစွာ စာကြောင်း '1'
သို့ ဂဏန်း 2 ပေါင်းထည့်မည်ဖြစ်ပြီး ရလဒ်အဖြစ်
စာကြောင်း '12' ရရှိမည်။ ထို့နောက် ဤ
စာကြောင်းသို့ ဂဏန်း 3 ပေါင်းထည့်မည်ဖြစ်ပြီး ရလဒ်အဖြစ်
စာကြောင်း '123' ရရှိမည်။
javascriptlet a = '1' + 2 + 3;
alert(a); // '123' ကို ပြသမည်
သို့သော် အောက်ပါ ဥပမာတွင် ဂဏန်းများ 2
နှင့် 3 ကို အစပိုင်း၌ ရေးသားထားသည်၊ ထို့ကြောင့် ပထမဦးစွာ
၎င်းတို့သည် ဂဏန်းများအဖြစ် ပေါင်းထည့်မည်၊ ရလဒ်အဖြစ်
ဂဏန်း 5 ရရှိမည်၊ ထို့နောက် ဤဂဏန်းသို့
စာကြောင်း '1' ပေါင်းထည့်မည်၊ နောက်ဆုံးတွင် စာကြောင်း '51' ရရှိမည်။
javascriptlet a = 2 + 3 + '1';
alert(a); // '51' ကို ပြသမည်
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5' + '2';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5' + 2;
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = 5 + '2';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = 5 + 2;
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5' * '2';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5' - '2';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5' / '2';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5' % '2';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5s' * '2';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5s' + '2';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = (-'5') + (-'2');
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5' * 1 + '2' * 1;
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '5' * '1' + '2' * '1';
alert(a);
ကုဒ်ကို မစတင်ဘဲ၊ မည်သည့်အရာကို စခရင်ပေါ်တွင် ပြသမည်ကို ဆုံးဖြတ်ပါ။
javascriptlet a = '' + 3 + 1;
alert(a);