ECMAScript အခြေခံ အမျိုးအစား
- အရှေ့လိုက် စာရင်း ECMAScript အကြောင်း
- နောက်လိုက် စာရင်း ECMAScript အမျိုးအစား ပြောင်းလဲခြင်း
ECMAScript သည် ပြင်းအမျိုးအစား ၅ ခု ရှိသည်၊ ပုံစံအားဖြင့် Undefined, Null, Boolean, Number နှင့် String ဖြစ်သည်။
typeof တိုက်ရိုက်လုပ်ဆောင်သူ
typeof တိုက်ရိုက်လုပ်ဆောင်သူ သည် ညှိနိုင်သော အမှတ်သို့မဟုတ် အရာအမှတ် တစ်ခုကို ပါဝင်သည်။ ဥပမာ:
var sTemp = "test string"; alert (typeof sTemp); // ပြန်လည်ပေးသည် "string" alert (typeof 86); // ပြန်လည်ပေးသည် "number"
အမှတ်သို့မဟုတ် အရာအမှတ်ကို typeof တိုက်ရိုက်လုပ်ဆောင်သူ ကို ခေါ်ဆိုချင်း အပြင်းအဓိပ္ပာယ်တစ်ခုမှာ ပြန်လည်ပေးသည်
- undefined - အမှတ်ကို Undefined အမျိုးအစား ဖြစ်စေ
- boolean - အမှတ်ကို Boolean အမျိုးအစား ဖြစ်စေ
- number - အမှတ်ကို Number အမျိုးအစား ဖြစ်စေ
- string - အမှတ်ကို String အမျိုးအစား ဖြစ်စေ
- object - အမှတ်ကို မည်သည့် မက်ကွန်းအမျိုးအစား သို့မဟုတ် Null အမျိုးအစား ဖြစ်စေ
မှတ်ချက်:ကျွန်တော်မေးမန့်ပါ၊ typeof တိုက်ရိုက်လုပ်ဆောင်သူ အရ null အမှတ်အား "Object" ပြန်လည်ပေးသည်မှာ ဖြစ်သည်မှာ ဂျူဇေးရှင်း အပြောရေးတွင် အမှားတစ်ခုဖြစ်၍ ECMAScript ဖြင့် ထိန်းသိမ်းခဲ့သည်။ ဤမှာ null သည် အပြင်းအဖြစ် အစားထိုးသူ အဖြစ် ဖြစ်သည်၊ ထိုအချိန်ကာလမှာ အမှားအဖြစ် ထင်မြင်ကြသည်၊ သို့သော် နည်းပညာအရ အသက်ရှိသော ပြင်းဖြစ်သည်။
Undefined အမျိုးအစား
ဒီမှာပြောချင်း၊ Undefined အမျိုးအစားသည် တစ်ခုတည်းသော ပြင်းအဓိပ္ပာယ်တစ်ခုဖြစ်၍ undefined ဖြစ်သည်။ ကြောင်းအမှတ်ကို မသတ်မှတ်မှီ ကြောင်းအမှတ်၏ ပုံစံ undefined ဖြစ်သည်။
var oTemp;
前面一行代码声明变量 oTemp,没有初始值。该变量将被赋予值 undefined,即 undefined 类型的字面量。可以用下面的代码段测试该变量的值是否等于 undefined:
var oTemp; alert(oTemp == undefined);
这段代码将显示 "true",说明这两个值确实相等。还可以用 typeof 运算符显示该变量的值是 undefined:
var oTemp; alert(typeof oTemp); //输出 "undefined"
提示:值 undefined 并不同于未定义的值。但是,typeof 运算符并不真正区分这两种值。考虑下面的代码:
var oTemp; alert(typeof oTemp); //ပြန်ရေးသား "undefined" alert(typeof oTemp2); //ပြန်ရေးသား "undefined"
အရင်းအမြစ် အချက်အလက် သည် အော်တာရီ နှင့် oTemp2 နှစ်ခု အား ပြန်ရေးသား သော "undefined" ဖြစ်သည်။ သို့သော် အော်တာရီ သည် oTemp2 ကို သာ မပြင်ဆင် မပေးထား ပေ။ အခြား အထွောင်းအား ကို သုံးပြီး အခြား အထွောင်းအား အော်တာရီ နှင့် တူညီ မဟုတ် ဖြစ် လျှင် အရာ ဖြစ်ပေါ်စေ ပေ။ အခြား အထွောင်းအား သည် သာမန် အမှတ်အသား ကို သုံးနိုင် သော်လည်း အော်တာရီ သည် မပြင်ဆင် မပေးထား သော အမှတ်အသား ကို သုံးနိုင် မဟုတ် ပေ။
အခါတစ်ခါ အော်တာရီ ကို အသုံးပြု လျှင် အရာ ဖြစ်ပေါ်စေ သည်။
var oTemp; alert(oTemp2 == undefined);
ပုဂ္ဂိုလ်အဖွဲ့ က ရှင်းလင်း မပြန်လည် ပြေးဆွဲ သော အတ္ထပိုင်း ကို ပြန်ရေးသား သော် အတ္ထပိုင်း undefined ကို ပြန်ရေးသား လိမ့်မယ်။ အော်တာရီ သည် အော်တာရီ အတ္ထပိုင်း အတွက် အော်တာရီ ပြန်ရေးသား သည်။
function testFunc() { } alert(testFunc() == undefined); //ပြန်ရေးသား "true"
Null အမျိုးအစား
အတ္ထပိုင်း တစ်ခု သာ ရှိသော အမျိုးအစား တစ်ခုခု ဖြစ်သည် Null အမျိုးအစား။ အတ္ထပိုင်း null သည် သူ၏ အတ္ထပိုင်း သာ ရှိသည်။ အတ္ထပိုင်း undefined သည် အတ္ထပိုင်း null မှ ဆင်းသက် လာသော အတ္ထပိုင်း ဖြစ်သည်။ အတ္ထပိုင်း null နှင့် undefined သည် တူညီသည် အပြင် ECMAScript သည် သူတို့ကို တူညီ ကြောင်း ကိုးကားသည်။
alert(null == undefined); //ပြန်ရေးသား "true"
ထိုအတ္ထပိုင်းများ တူညီသည်မဟုတ် သော်လည်း သူတို့၏ ပုံစံများ မတူညီပေ။ undefined သည် အမှတ်အသား ကို မပြင်ဆင် မပေးထားခဲ့ သော အမှတ်အသား အတွက် ပေးထားသော အတ္ထပိုင်းဖြစ်သည်။ null သည် ရှိမရှိ သေးသေးသည့် အရာ အား ကိုးကားသည် (typeof အထွောင်းအား ကို ပြောကြားခဲ့သည်)။ ပြီးလျှင် ပုဂ္ဂိုလ်အဖွဲ့ သို့ ပြန်ရေးသား သူတို့ သည် အရာ ကို လုပ်ခဲ့ သော် အရာ ကို လုပ်ခဲ့ မရှိဘဲ ကြား ပြီး အတ္ထပိုင်း null ကို ပြန်လည် ပြန်ရေးသား ကြသည်။
Boolean အမျိုးအစား
Boolean အမျိုးအစား သည် ECMAScript တွင် အသုံးချရသော အမျိုးအစား တစ်ခုခု ဖြစ်သည်။ အသုံးပြုသော အတ္ထပိုင်းများ true နှင့် false ဖြစ်သည် (တူညီသော အတ္ထပိုင်းများ)။
即使 false 不等于 0,0 也可以在必要时被转换成 false,这样在 Boolean 语句中使用两者都是安全的。
var bFound = true; var bLost = false;
Number 类型
ECMA-262 中定义的最特殊的类型是 Number 类型。这种类型既可以表示 32 位的整数,还可以表示 64 位的浮点数。
直接输入的(而不是从另一个变量访问的)任何数字都被看做 Number 类型的字面量。例如,下面的代码声明了存放整数值的变量,它的值由字面量 86 定义:
var iNum = 86;
八进制数和十六进制数
整数也可以被表示为八进制(以 8 为底)或十六进制(以 16 为底)的字面量。八进制字面量的首数字必须是 0,其后的数字可以是任何八进制数字(0-7),如下面的代码所示:
var iNum = 070; //070 等于十进制的 56
要创建十六进制的字面量,首位数字必须为 0,后面接字母 x,然后是任意的十六进制数字(0 到 9 和 A 到 F)。这些字母可以是大写的,也可以是小写的。例如:
var iNum = 0x1f; //0x1f 等于十进制的 31 var iNum = 0xAB; //0xAB 等于十进制的 171
提示:尽管所有整数都可以表示为八进制或十六进制的字面量,但所有数学运算返回的都是十进制结果。
浮点数
要定义浮点值,必须包括小数点和小数点后的一位数字(例如,用 1.0 而不是 1)。这被看作浮点数字面量。例如:
var fNum = 5.0;
对于浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。
科学计数法
对于非常大或非常小的数,可以用科学计数法表示浮点数,可以把一个数表示为数字(包括十进制数字)加 e(或 E),后面加乘以 10 的倍数。例如:
var fNum = 5.618e7
该符号表示的是数 56180000。把科学计数法转化成计算式就可以得到该值:5.618 x 107。
တစ်ခါ သို့မဟုတ် အသံအစုအရေအတွက် အသံအတွက် စက္ခနှဲပြား ကို အသုံးပြုနိုင်သည်။ ဥပမာ။ 0.00000000000000008 ကို 8-e အဖြစ် ပြန်ပေးနိုင်သည်17(这里,10 被升到 -17 次冥,意味着需要被 10 除 17 次)。ECMAScript 默认把具有 6 个或 6 个以上前导 0 的浮点数转换成科学计数法。
提示:也可用 64 位 IEEE 754 形式存储浮点值,这意味着十进制值最多可以有 17 个十进制位。17 位之后的值将被裁去,从而造成一些小的数学误差。
特殊的 Number 值
几个特殊值也被定义为 Number 类型。前两个是 Number.MAX_VALUE 和 Number.MIN_VALUE,它们定义了 Number 值集合的外边界。所有 ECMAScript 数都必须在这两个值之间。不过计算生成的数值结果可以不落在这两个值之间。
当计算生成的数大于 Number.MAX_VALUE 时,它将被赋予值 Number.POSITIVE_INFINITY,意味着不再有数字值。同样,生成的数值小于 Number.MIN_VALUE 的计算也会被赋予值 Number.NEGATIVE_INFINITY,也意味着不再有数字值。如果计算返回的是无穷大值,那么生成的结果不能再用于其他计算。
事实上,有专门的值表示无穷大,(如你猜到的)即 Infinity。Number.POSITIVE_INFINITY 的值为 Infinity。Number.NEGATIVE_INFINITY 的值为 -Infinity。
由于无穷大数可以是正数也可以是负数,所以可用一个方法判断一个数是否是有穷的(而不是单独测试每个无穷数)。可以对任何数调用 isFinite() 方法,以确保该数不是无穷大。例如:
var iResult = iNum * some_really_large_number; if (isFinite(iResult)) { alert("finite"); } else { alert("infinite"); }
နောက်ဆုံး သမားသား အရာဝတ္တု သည် နာမည်ကြား အရာဝတ္တု ဖြစ်သည်။ နာမည်ကြား အရာဝတ္တု သည် အလွန် ကြွေးမြတ် အရာဝတ္တု ဖြစ်သည်။ အများစား အခါ၌ အကျွန်းပုံး အခြေအနေအရ ပြောင်းလဲခြင်း မရှိသေးပါ။ ဥပမာ၊ ကြောင်း ကို အစီရင်ခံသင့်သော အရာဝတ္တု သို့ ပြောင်းလဲခြင်း မရှိပါ။ အရာဝတ္တု သည် အရာဝတ္တု သို့ မပြောင်းလဲနိုင်ပါ။ နာမည်ကြား အရာဝတ္တု သည် အရာဝတ္တု အတိုင်း အတား ကို အသုံးပြုခြင်း မရှိပါ။ နာမည်ကြား အရာဝတ္တု သည် ကြွေးမြတ် အရာဝတ္တု နှင့်အတူ အခြား အရာဝတ္တု အတိုင်း အတား ကို အသုံးပြုခြင်း မရှိပါ။ နာမည်ကြား အရာဝတ္တု သည် ကြွေးမြတ် အရာဝတ္တု နှင့် ကွဲသည်။ အောက်ပါ ကြော်ငြာမှာ နာမည်ကြား အရာဝတ္တု နှင့် ကွဲသည်။
alert(NaN == NaN); //输出 "false"
出于这个原因,不推荐使用 NaN 值本身。函数 isNaN() 会做得相当好:
alert(isNaN("blue")); //输出 "true" alert(isNaN("666")); //输出 "false"
String 类型
String 类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储 0 或更多的 Unicode 字符,有 16 位整数表示(Unicode 是一种国际字符集,本教程后面将讨论它)。
字符串中每个字符都有特定的位置,首字符从位置 0 开始,第二个字符在位置 1,依此类推。这意味着字符串中的最后一个字符的位置一定是字符串的长度减 1:

String အက္ခရာတံမြောက် သည် နားရိုး ("" အား သုံးပြီး) သို့မဟုတ် စက်သုံး နားရိုး ('' အား သုံးပြီး) ဖြင့် ကြေညာထားသည်။ Java အား နားရိုး သုံးပြီး စက်သုံး နားရိုး သုံးပြီး သို့မဟုတ် ECMAScript အား အက္ခရာ အမျိုးအစား မရှိဘဲ ဖြစ်သည်။ အရေးပါသော အကျိုးဆက် အား အတိုင်းအတန်း သုံးနိုင်သည်။ ဥပမာ၍ အောက်ပါ နှစ်ခု အရေးပါသော အကျိုးဆက် ဖြစ်သည်:
var sColor1 = "red"; var sColor2 = 'red';
String အမျိုးအစား အချို့ အက္ခရာတံမြောက် ပါဝင်သည်။ Java, C နှင့် Perl ပုံစံ ပြုလုပ်သူများ အတွက် အကျွမ်းကျွမ်းသည်။
အောက်ပါအတိုင်း အက္ခရာတံမြောက် ECMAScript ကို ပြင်ဆင်ထားပါသည်:
စက္ခု | အကျိုးသက် |
---|---|
\n | ပြောင်းလှည့် |
\t | အချိန်အချက် |
\b | အကွင်း |
\r | ပြန်လည် |
\f | ပြောင်းလှည့် |
\\\ | အရွယ်ချွန် |
\' | စက်သုံး နားရိုး |
\" | နားရိုး |
\0nnn | ဆယ်ကြားစင်း ကုဒ် nnn ကို ကိုယ်စားပြုသော အကြားn 0 မှ 7 အထိ သော ဆယ်ကြားစင်း ပုံစံ |
\xnn | ဆယ်ကြားစင်း ကုဒ် nn ကို ကိုယ်စားပြုသော အကြားn 0 မှ F အထိ သော ဆယ်ကြားစင်း ပုံစံ |
\unnnn | ဆယ်ကြားစင်း ကုဒ် nnnn ကို ကိုယ်စားပြုသော Unicode အကြားn 0 မှ F အထိ သော ဆယ်ကြားစင်း ပုံစံ |
- အရှေ့လိုက် စာရင်း ECMAScript အကြောင်း
- နောက်လိုက် စာရင်း ECMAScript အမျိုးအစား ပြောင်းလဲခြင်း