Aina ya Chaguo cha ECMAScript

ECMAScript ina kinaadili tano (primitive type), ni Undefined, Null, Boolean, Number na String.

Operatari typeof

Operatari typeof ina thamani pekee, yaani kiwango kinachotumika kwa kujadili.

var sTemp = "test string";
alert (typeof sTemp);    //kutumia 'string'
alert (typeof 86);    //kutumia 'number'

Kama kusababisha typeof kiwango au thamani kwa kiwango, itakuwa na thamani iliyofikia kimoja kuanzia hapa chini:

  • kiwango cha Undefined - kama kiwango hicho ni kinaadili cha Undefined
  • kiwango cha chochote - kama kiwango hicho ni kinaadili cha chochote
  • kiwango cha namba - kama kiwango hicho ni kinaadili cha namba
  • kiwango cha neno - kama kiwango hicho ni kinaadili cha neno
  • kiwango cha kinaadili - kama kiwango hicho ni kinaadili au kiwango cha Null

Msaada:Inasikitwa, kwa nini operatari typeof hupinga 'Object' kwa thamani ya null. Hii inaonekana kama kinaadili kwenye muundo wa JavaScript wa kwanza, ambao ECMAScript ikawalichwa. Sasa, null inaonekana kama kinaadili ya kiwango cha kwanza, kwa sababu hii inasababisha matokeo ya kinaadili, lakini kwa mbinu ni thamani wa kwanza.

Tukio wa Undefined

Kama hatakiwa kuwa, tukio wa Undefined ina ukweli pekee, ni undefined. Kama inasikitishwa kiwango cha mwingine cha uharibifu, thamani yake kwa kusadikiwa ni undefined.

var oTemp;

前面一行代码声明变量 oTemp,没有初始值。该变量将被赋予值 undefined,即 undefined 类型的字面量。可以用下面的代码段测试该变量的值是否等于 undefined:

var oTemp;
alert(oTemp == undefined);

这段代码将显示 "true",说明这两个值确实相等。还可以用 typeof 运算符显示该变量的值是 undefined:

var oTemp;
alert(typeof oTemp); //输出 "undefined"

Tahayari:值 undefined 并不同于未定义的值。但是,typeof 运算符并不真正区分这两种值。考虑下面的代码:

var oTemp;
alert(typeof oTemp);  //输出 "undefined"
alert(typeof oTemp2);  //输出 "undefined"

前面的代码对两个变量输出的都是 "undefined",即使只有变量 oTemp2 从未被声明过。如果对 oTemp2 使用除 typeof 之外的其他运算符的话,会引起错误,因为其他运算符只能用于已声明的变量上。

Kwa mfano, programu iliyotambuliwa hapa itakatua:

var oTemp;
alert(oTemp2 == undefined);

Kama programu inaelewa kushika thamani kama thamani ya 'undefined', inaelewa kama thamani ya 'undefined', kama iliyotambuliwa hapa:

function testFunc() {
{}
alert(testFunc() == undefined);  // kuwakilisha 'true'

Tipe la Null

Tipe moja kwa thamani yake ni Null, ina thamani moja pekee ya 'null', ambayo inaelewa kama thamani ya kina. Imaadili ya 'undefined' inatumiwa kama thamani ya 'null', kwa sababu ECMAScript inaelewa kwamba zina ukweli wa kina.

alert(null == undefined);  // kuwakilisha 'true'

Ingawa maadili ya kina na mabaya ni kawaida, maana yao ni tofauti. Imaadili ya 'undefined' inatumiwa kama thamani ya kiwango kilichotolewa kwa kina ambapo kinachotumika kama kiwango cha kina cha kina cha kiwango kilichotolewa cha kiwango cha kina (inatumsikia kwa ujaribu kipengele cha 'typeof' kama ujumbe wa kina). Kama programu inaelewa kushika kiwango cha kina cha kiwango cha kina cha kiwango kilichotolewa cha kiwango cha kina, inatumiwa kama thamani ya 'null'.

Tipe la Booleeni

Tipe la Booleeni ni kipo cha kiongozi cha kati ya kipengele cha ECMAScript. Ina ikiwa kwa maadili ya kina na mabaya (inayoelewa kama maelezo ya Boolean).

Ingawa false hauonekani kama 0, 0 inaweza kuwaambia false kama inahitaji, kwa sababu kwa sababu inaonesha kwamba kwa ujumbe wa Boolean kunaonesha kwamba kwa sababu yote ni muhimu.

var bFound = true;
var bLost = false;

Adadifu ya Number

Adadifu ya ECMA-262 inaadilifu kama Number. Hii inaadilifu kwa kutoa namba za kina za 32 kwa kina na namba za kina za 64 za kina.

Maneno yote ya kina yaliyotumiwa kwa kuzingatia (haliwezi kutumika kutoka kwenye variable nyingine) yanaonekana kama adadifu ya Number. Mfano, programu ya programu ya programu iliyotumiwa inaamua variable ya thamani ya kina, inayotumika kwa kina ya 86:

var iNum = 86;

Namba za asilimia 8 na namba za asilimia 16

Namba za kina zingeweka kama adadifu za namba za asilimia 8 (inaadilifu 8) au namba za asilimia 16 (inaadilifu 16). Adadifu ya namba ya asilimia 8 inahitaji namba ya kwanza ya 0, baada ya kuingia na namba za asilimia 8 (0 hadi 7), kama inayotumiwa kwenye programu ya programu ya programu. Mfano:

var iNum = 070;  //070 inaeleza namba ya desimali 56

Kuunda adadifu ya namba ya asilimia 16, inayotumika kina inahitaji namba ya kwanza ya 0, baada ya kuingia na herufi x, baada ya kuingia na namba za asilimia 16 (0 hadi 9 na A hadi F). Herufi hizi inaweza kwa kipya kwa kubwa au kikuu. Mfano:

var iNum = 0x1f;  //0x1f inaeleza namba ya desimali 31
var iNum = 0xAB;  //0xAB inaeleza namba ya desimali 171

Tahayari:Ingawa namba zote za kina zingeweka kama namba za asilimia 8 au namba za asilimia 16, matokeo ya matukio ya matumizi ya matumizi inayotumika zinaonekana kama namba za desimali.

Namba za kina

Kuwaambia thamani ya kina inayotakiwa kufikirika, lazima kushika na nukuu ya desimali na namba moja inayotumiwa baada ya nukuu ya desimali (kama inayotumiwa 1.0 haliwezi inatumiwa 1). Hii inatumsheheza kama adadifu ya kina. Mfano:

var fNum = 5.0;

Mwana wa adadifu ya kina wa kina ni kwamba kufikiria kwake kabla ya kufanyia matokeo, hatua ya kufikiria ni kusafirishwa kama maneno.

Adadifu ya iliyopo kati ya namba

Kwa namba kubwa au kidogo sana, hataweza kutumia adadifu ya iliyopo kati ya namba kutoa namba za kina, inaweza kutoa namba kama namba (kunaadilifu ya namba ya desimali) na e (au E), baada ya kuingia na kubwa wa 10 kwa umbo wa kina. Mfano:

var fNum = 5.618e7

Simu hii inaonyesha namba 56180000. Kuongeza adadifu ya adadifu ya iliyopo kati ya namba inaweza kufikia thamani hii: 5.618 x 107

Hataweza kutoa namba kidogo sana kwa uwanja wa adadifu ya iliyopo kati ya namba, kwa mfano 0.00000000000000008 inaweza kutoa 8-e17(Hapa, 10 inatumiwa kama -17 katika kina ya uadilifu, inaingia kwamba inahitaji kusababisha 10 kwa mara 17). ECMAScript inatumia thamani za kina za tukio za kina ya 6 au zaidi za kuzingatia mabaki ya tukio.

Tahayari:Inaweza kutumika kwa 64 biti za IEEE 754 kuondoa thamani za kina za tukio, kimeingia kwamba thamani zingekuwa kwa 17 katika chakula cha chini. Thamani zingekuwa zimekutia chini ya 17, kwa sababu ya matukio ya kina.

Thamani za Number zilizotengenezwa

Mwili wa thamani za Number zimekamilika. Kati yake, yaliyopita ni Number.MAX_VALUE na Number.MIN_VALUE, inaichukua mkataba wa thamani za Number. Zote ECMAScript zinaenda kati ya thamani hizi. Inafikia kwamba thamani za kidhisia zingekuwa kwenye thamani hizi.

Kama thamani yaliyotengenezwa kwa matokeo wa kidhisia kubwa kuliko Number.MAX_VALUE, itatumiwa thamani ya Number.POSITIVE_INFINITY, inaingia kwamba hana thamani za kidhisia. Kama thamani yaliyotengenezwa inapunguka chini ya Number.MIN_VALUE, itatumiwa thamani ya Number.NEGATIVE_INFINITY, inaingia kwamba hana thamani za kidhisia. Kama matokeo wa kidhisia inatukumbuka thamani za uadilifu, matokeo hauwezi kutumiwa kwa matokeo mengine ya arithmetiki.

Kwa ukweli, kuna thamani zilizotengenezwa kwa uadilifu, (kama inatukumbuka) ni Infinity. Thamani ya Number.POSITIVE_INFINITY ina Infinity. Thamani ya Number.NEGATIVE_INFINITY ina -Infinity.

Kwa sababu thamani za uadilifu zingekuwa naani au kidogo, inaweza kutumika mtindo wa mbinu ili kufikiria thamani kama inayotaka (hakuna thamani za uadilifu zinauchukuliwa kwa kikabla). Inaweza kutumika mtindo wa isFinite() kwa kuthibitisha kwamba thamani haina uadilifu. Mfano:

var iResult = iNum * some_really_large_number;
if (isFinite(iResult)) {
    alert("finite");
{}
else {
    alert("infinite");
{}

Mwili wa kina wa kina ni NaN, inaeleka kama 'Not a Number'. NaN ni mbinu ya kina inayotaka. Kwa kawaida, hii inatendeka kama upofuzi wa aina (String, Boolean na kila aina nyingine) inafai kusikitisha. Mfano, kutoa mawili wa neno 'blue' kama thamani inafai kusikitisha, kwa sababu hakuna thamani iliyohusiana. Kama inavyofanyika kwa uadilifu, NaN inakadaiwa kwa arithmetiki. Mwili mwingine wa kina wa kina ni kwamba haukubadilika na pekee yake, inaingia kwamba programu zingefika kama false:

alert(NaN == NaN);  //输出 "false"

出于这个原因,不推荐使用 NaN 值本身。函数 isNaN() 会做得相当好:

alert(isNaN("blue"));  //输出 "true"
alert(isNaN("666"));  //输出 "false"

String 类型

String 类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储 0 或更多的 Unicode 字符,有 16 位整数表示(Unicode 是一种国际字符集,本教程后面将讨论它)。

字符串中每个字符都有特定的位置,首字符从位置 0 开始,第二个字符在位置 1,依此类推。这意味着字符串中的最后一个字符的位置一定是字符串的长度减 1:

matokeo wa kifupi cha na viwango vya kina

Kina cha kawaida cha string inaandikwa na makabila ya kawaida ("), au makabila ya kwanza ('). Na hata Java inaandikwa na makabila ya kawaida ("), na makabila ya kwanza ('). Kwa sababu ECMAScript haukuwa na jini cha heri, inaweza kutumia hizi wengi ya maadili haya. Mfano, mabomu ya mbili ya hizi yamefadhiliwa:

var sColor1 = "red";
var sColor2 = 'red';

Jina la String inaonyesha wengi wa kina cha kawaida, wafanyikazi wa Java, C na Perl wamekuwa wameona hizi kwa kawaida.

Hapa inapatikana kina cha kawaida cha ECMAScript:

Kina cha kawaida Maana
\n Kichwa cha mbele cha mawili
\t Kichwa cha mbele cha tabia
\b Makabila
\r Kichwa cha mbele
\f Kichwa cha mbele
\\ Kichwa cha jinga
\' Makabila ya kwanza
\" Makabila
\0nnn Kampuni ya 8 za hali ya kina nnn Inonyesha heri ya heri (n Ni namba ya 8 za hali ya kina kutoka 0 hadi 7)
\xnn Kampuni ya 16 za hali ya kina nn Inonyesha heri ya heri (n Ni namba ya 16 za hali ya kina kutoka 0 hadi F)
\unnnn Kampuni ya 16 za hali ya kina nnnn Inonyesha heri ya Unicode (n Ni namba ya 16 za hali ya kina kutoka 0 hadi F)