Muundo wa Tukio wa ECMAScript
- Mwili wa awali Muundo wa Mazingira wa Kuzaliwa wa ECMAScript
- Mwili mpya Muundo wa Tukio wa Reference ya ECMAScript
Mwili wa kina kwa uandikaji wa chanzo kina uwezo wa uharibifu wa aina.
ECMAScript ina matumizi ya uharibifu ya aina kubwa kwa wasomi.
Aina kubwa ya mimea ina matumizi ya uongezaji kwa matumizi ya uharibifu, na watu wengi wana matumizi ya jinga ya kawaida kwa matumizi ya uharibifu zaidi. Kwa kila msingi, uharibifu wa aina katika ECMAScript ni hatua kwa hatua kwa hatua.
Kuondoa kwa maandiko
Mwili wa Boolean, namba na string wa mimea wa asili wa ECMAScript ina mafanikio yao kwamba wana uadilifu na matumizi, kama uadilifu wa kiumu kwa kuzalishwa.
Kwa mfano, kufikia ukubwa wa kiumu string, inaweza kutumia programu hii:
var sColor = "red"; alert(sColor.length); // kutumia "3"
Inasikitika kwamba "red" ina uadilifu length, inayogawanya ukubwa wa maandiko.
Kutokana na hayo, 3 aina kuu za mimea wa asili, Boolean, namba na string, zina toString() method, inayopunguza thamani yao kwa sababu ya maandiko.
Wewe tunaweza kuwaingia, “Mafaa tunaweza kumwambia toString() method kama hauwezi kuhitaji?
Boolean 类型的 toString() 方法只是输出 "true" 或 "false",结果由变量的值决定:
var bFound = false; alert(bFound.toString()); //输出 "false"
Number 类型的 toString() 方法比较特殊,它有两种模式,即默认模式和基模式。采用默认模式,toString() 方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学计数法),如下所示:
var iNum1 = 10; var iNum2 = 10.0; alert(iNum1.toString()); //输出 "10" alert(iNum2.toString()); //输出 "10"
Msaada:在默认模式中,无论最初采用什么表示法声明数字,Number 类型的 toString() 方法返回的都是数字的十进制表示。因此,以八进制或十六进制字面量形式声明的数字输出的都是十进制形式的。
采用 Number 类型的 toString() 方法的基模式,可以用不同的基输出数字,例如二进制的基是 2,八进制的基是 8,十六进制的基是 16。
基只是要转换成的基数的另一种加法而已,它是 toString() 方法的参数:
var iNum = 10; alert(iNum.toString(2)); //输出 "1010" alert(iNum.toString(8)); //输出 "12" alert(iNum.toString(16)); //输出 "A"
在前面的示例中,以 3 种不同的形式输出了数字 10,即二进制形式、八进制形式和十六进制形式。HTML 采用十六进制表示每种颜色,在 HTML 中处理数字时这种功能非常有用。
Msaada:对数字调用 toString(10) 与调用 toString() 相同,它们返回的都是该数字的十进制形式。
Angalia:
请参阅 Mbijani ya JavaScriptMafuatilia ya toString() ya kuelewa:
Kubadilisha kwa namba
ECMAScript ina vifaa mbili ya kubadilisha thamani za asili za bila namba kwa namba, ni parseInt() na parseFloat().
Kama inategemea, kama kwanza inaangalia kwa namba ya integer, kama pili inaangalia kwa namba ya tatu. Kwa sababu ya kusoma String kwa kina, zitaendelea kwa sababu za kina; kwa sababu ya kusoma nyingine, zinaonyesha NaN.
parseInt()
Kwenye kila ukaguzi wa string kama namba, parseInt() na parseFloat() inaangalia string na kina.
Method ya parseInt() inaangalia heri na heri kwa siku ya kwanza kwa heri ya siku ya kwanza, inaonyesha kama ni namba bora; hata hivyo, kama ni tofauti na namba, inaonyesha NaN, hata hivyo inasasa kufanya kazi zingine. Kama heri inaona namba bora, inaangalia heri na heri kwa heri ya pili, inaonyesha kama ni tofauti na namba. Hii inaendelea hadi kumtumika kwa heri bila namba, kwa sababu ya kumaliza kubadilisha string kwa namba.
Kwa mfano, kama inafaa kubadilisha string "12345red" kwa namba, parseInt() inaweza kubadilisha 12345, kwa sababu kumtumika kwa kumtumika kwa heri, inaona heri kama r na inapungua kwa kumaliza uharibifu.
Maneno ya namba ya string inayotumiwa yanaweza kubadilishwa kwa namba, kama "0xA" inaweza kubadilishwa kwa namba 10. Hata hivyo, string "22.5" inaweza kubadilishwa kwa 22, kwa sababu kwa namba ya kina, kombo ya namba ni kitu cha bila maana.
Mifano mingi yanaelewa hapa:
var iNum1 = parseInt("12345red"); // inaeza 12345 var iNum1 = parseInt("0xA"); // inaeza 10 var iNum1 = parseInt("56.9"); // inaeza 56 var iNum1 = parseInt("red"); // inaeza NaN
Method ya parseInt() ina ujumbe wa kiwango, ambao inaweza kubadilisha string ya binari, tatu, labda au kilichotumiwa kama kadini ya namba. Kiwango hiki kinatokana na parameter ya pili ya parseInt(). Kwa sababu ya kuwa na ujumbe wa labda, inafaa kusoma parseInt() kama hii:
var iNum1 = parseInt("AF", 16); // inaeza 175
Tukianu, inafaa kwa binari, tatu au tano (kuchukua namba ya kuzingatia mabaki), inafaa kusoma parseInt() kama hii:
var iNum1 = parseInt("10", 2); // inaeza 2 var iNum2 = parseInt("10", 8); // haukaza 8 var iNum3 = parseInt("10", 10); // haukaza 10
Kama namba ya 10 ina kufikirika kwa nafasi ya kwanza, itakuwa bora kusoma namba ya 10, kama itakapokwaa namba ya 8 kina kina kina. Mfano:
var iNum1 = parseInt("010"); // haukaza 8 var iNum2 = parseInt("010", 8); // haukaza 8 var iNum3 = parseInt("010", 10); // haukaza 10
Kwenye mtaani hii, mababu wa tarakimu "010" wana kufikirika kama namba ya 8 kama kina kina kina. Mababu wa tarakimu wote inahitajika kwa 8 kama kina kina kina. Kina kina kina wa kwanza ina kufikirika kama namba ya 10, kama iNum3 inafikia 10 penda.
参阅
请参阅 Mbijani ya JavaScriptMaoni ya kina kina kina kuhusu method ya parseInt():parseInt()。
parseFloat()
Method ya parseFloat() ina kufikiria kama method ya parseInt(), ikianza kutambua kila heri kutoka nafasi ya 0 hadi kufikia heri bila ukweli, kwa pili inakubali tarakimu za kwanza kwa namba.
Hata hivyo, kwa method hii, chuki ya tarakimu ya kwanza ina ukweli. Ikiwa kuna mababu wa tarakimu, mababu wa tarakimu ya pili ina kuwa bila ukweli. parseFloat() inakubali tarakimu za kwanza kwa namba. Kwa mfano, tarakimu "11.22.33" inahitajika kwa 11.22.
Menginekani ya kusoma method ya parseFloat() ina kuwa, tarakimu inahitajika kwa fanani za tukio za tarakimu na si kwa namba ya 8 au ya 16. Method hii inapunguza namba za kwanza, kwa mfano namba ya 8 0102 inahitajika kwa 102. Kwa namba ya 16 0xA, method hii inakwaa NaN, kwa sababu x haukuwa fanani bora kwa namba ya tukio za tarakimu ( ).Msaada:Kufikia matokeo ya kina-vya-internet, kina kina kina haukaza 0, bali NaN).
Ina ukweli, method ya parseFloat() hau na neno la kuzalika.
Hapa ni mifano ya kusoma method ya parseFloat()
var fNum1 = parseFloat("12345red"); // haukaza 12345 var fNum2 = parseFloat("0xA"); // haukaza NaN var fNum3 = parseFloat("11.2"); // haukaza 11.2 var fNum4 = parseFloat("11.22.33"); // haukaza 11.22 var fNum5 = parseFloat("0102"); //返回 102 var fNum1 = parseFloat("red"); //返回 NaN
参阅
请参阅 Mbijani ya JavaScript提供的有关 parseFloat() 方法的详细信息:parseFloat()。
强制类型转换
您还可以使用强制类型转换(type casting)来处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。
编者注:cast 有“铸造”之意,很贴合“强制转换”的意思。
ECMAScript 中可用的 3 种强制类型转换如下:
- Boolean(value) - 把给定的值转换成 Boolean 型;
- Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
- String(value) - 把给定的值转换成字符串;
用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。
Boolean() 函数
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。
可以用下面的代码测试 Boolean 型的强制类型转换:
var b1 = Boolean(""); //false - 空字符串 var b2 = Boolean("hello"); //true - 非空字符串 var b1 = Boolean(50); //true - 非零数字 var b1 = Boolean(null); //false - null var b1 = Boolean(0); //false - 零 var b1 = Boolean(new object()); //true - 对象
Number() 函数
Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。
还记得吗,parseInt() 和 parseFloat() 方法只转换第一个无效字符之前的字符串,因此 "1.2.3" 将分别被转换为 "1" 和 "1.2"。
Kuagiza kwa Number(), "1.2.3" itakuwa NaN kwa sababu thamani ya stringi kinasifia kubadilika tena kwa namba. Ikiwa thamani ya stringi inaweza kubadilika tena kwa namba, Number() itahakikisha kwa kwamba itakutumia methodi ya parseInt() au parseFloat().
Tafarriki hii inonyesha matukio yanayotokana na kuitumia Number() kwa thamani mbalimbali:
Tukio | Matokeo |
---|---|
Number(false) | 0 |
Number(true) | 1 |
Number(undefined) | NaN |
Number(null) | 0 |
Number("1.2") | 1.2 |
Number("12") | 12 |
Number("1.2.3") | NaN |
Number(new object()) | NaN |
Number(50) | 50 |
Fungili ya String()
Chaguo cha ukaguzi wa aina cha kwanza cha String() ni kizuri sana, kwa sababu hii inaweza kubadilisha thamani kwa stringi kwa kina.
Ili kufanya ukaguzi wa aina hii, tuweza kutumia methodi ya toString() ya thamani iliyotumika kama kifungu, kama inaingia 12 kuwa "12", ingia true kuwa "true", ingia false kuwa "false", na kila kitu kama hiki.
Muungano wa ukaguzi wa aina wa string na kutumia methodi ya toString() ni kipengele pekee, kwa sababu ukaguzi wa aina wa null na undefined inaweza kumfanikisha stringi kwa bila kosa:
var s1 = String(null); //"null" var oNull = null; var s2 = oNull.toString(); //ingaeza kosa
Kumekadiri ukaguzi wa aina ya mawili kama ECMAScript, ukaguzi wa aina bora una uwanja wa kumekadiri, lakini lazima uweze kuhakikisha kwamba ukaguzi huu una thamani wa haki.
- Mwili wa awali Muundo wa Mazingira wa Kuzaliwa wa ECMAScript
- Mwili mpya Muundo wa Tukio wa Reference ya ECMAScript