1. Penukaran aksara
var s1 = "01"; var s2 = "1.1"; var s3 = "z";//字母'z'无法转换为数字,所以或返回NaN var b = false; var f = 1.1; var o = { valueOf: function() { return -1; } }; s1 = -s1; //value becomes numeric -1 s2 = -s2; //value becomes numeric -1.1 s3 = -s3; //value becomes NaN b = -b; //value becomes numeric 0 f = -f; //change to -1.1 o = -o; // 1 先执行对象的valueOf()方法返回-1,--1为1 o = +o;//-1 o的valueOf()值为-1,+-1还是-1
2. Operasi aksara khas
var result1 = 5 - true; //4 because true is converted to 1 var result2 = NaN - 1; //NaN NaN不是一个数字,和任何数字做任何运算都是NaN var result3 = 5 - 3; //2 var result4 = 5 - ""; //5 because "" is converted to 0 var result5 = 5 - "2"; //3 because "2" is converted to 2 var result6 = 5 - null; //5 because null is converted to 0
3. Pembolehubah kepada operasi rentetan
var value1 = 10; var value2 = true; var value3 = null; var value4;//value4 没有赋值就是underfined 转换为字符串就是'underfined' alert(String(value1)); //"10" alert(String(value2)); //"true" alert(String(value3)); //"null" alert(String(value4)); //"undefined"
4. Penukaran nombor
var num = 10; alert(num.toString()); //"10"默认十进制 alert(num.toString(2)); //"1010"二进制 alert(num.toString(8)); //"12"八进制 alert(num.toString(10)); //"10"十进制 alert(num.toString(16)); //"a"十六进制
5. Operasi perbandingan rentetan
var result1 = 5 > 3; //true var result2 = 5 < 3; //false var result3 = "Brick" < "alphabet"; //true 字符串比较按照字母表顺序进行比较 小写字母在大写字母后面 var result4 = "Brick".toLowerCase() < "alphabet".toLowerCase(); //false字母表顺序比较 var result5 = "23" < "3"; //true 字符2小于字符3 var result6 = "23" < 3; //false 此时'23'转换成23了 var result7 = "a" < 3; //false because "a" becomes NaN 字符'a'无法转换成数字 var result8 = NaN < 3; //false NaN 和任何数字比较,都无法转换成数字,所以一直是false var result9 = NaN >= 3; //false
6. Penukaran aksara
var num1 = parseInt("AF", 16); //175 按照16进制输出十进制数据 10*16+15*1 var num2 = parseInt("AF"); //NaN 没有指定进制,默认按照10进制转换,由于AF不在十进制范围,返回NaN alert(num1); alert(num2);
7. Penggunaan parseInt
var num1 = parseInt("1234blue"); //1234 var num2 = parseInt(""); //NaN 字符''无法转换成数字 var num3 = parseInt("0xA"); //10 - hexadecimal 16进制的A var num4 = parseInt(22.5); //22 var num5 = parseInt("70"); //70 - decimal var num6 = parseInt("0xf"); //15 16进制为15
8. Penggunaan objek Nombor
var num1 = Number("Hello world!"); //NaN var num2 = Number(""); //0 空字符串可以转换成0 这个parseInt()不一样 var num3 = Number("000011"); //11 var num4 = Number(true); //1
9. Penggunaan NaN
alert(NaN == NaN); //false alert(isNaN(NaN)); //true alert(isNaN(10)); //false ?10 is a number alert(isNaN("10")); //false ?can be converted to number 10 alert(isNaN("blue")); //true ?cannot be converted to a number alert(isNaN(true)); //false ?can be converted to number 1
10 nombor maksimum sistem
var result = Number.MAX_VALUE + 1; alert(isFinite(result)); // false
11. Infiniti
alert(5 * 6); //30 alert(5 * NaN); //NaN alert(Infinity * 0); //NaN alert(Infinity * 2); //Infinity alert("5" * 5); //25 alert(true * 10); //10 alert(false * 10); //0 alert(26 % 5); //1 alert(Infinity % 3); //NaN alert(3 % 0); //NaN alert(5 % Infinity); //5 alert(0 % 10); //0 alert(true % 25); //1 alert(3 % false); //NaN
12. untuk dalam gelung
for (var propName in window) { document.write(propName); document.write("<br />"); }
13. Perbandingan watak istimewa
alert(null == undefined); //true alert(null === undefined); //false alert("NaN" == NaN); //false alert("NaN" === NaN); //false alert(NaN == NaN); //false alert(NaN === NaN); //false alert(NaN != NaN); //true alert(NaN !== NaN); //true alert(false == 0); //true alert(false === 0); //false alert(true == 1); //true alert(true === 1); //false alert(null == 0); //false alert(undefined == 0); //false alert(5 == "5"); //true alert(5 === "5"); //false
14 objek Boolean
var message = "Hello world!"; var messageAsBoolean = Boolean(message); alert(messageAsBoolean); //true
15. Gunakan untuk gelung dengan tag
Kedua-dua penyataan putus dan penyataan terus boleh digunakan bersama dengan penyataan berlabel untuk kembali ke lokasi tertentu dalam kod.
Biasanya ini dilakukan apabila terdapat gelung di dalam gelung, contohnya:
var num = 0; //返回到特定的位置 outermost: for (var i=0; i < 10; i++) { for (var j=0; j < 10; j++) { if (i == 5 && j == 5) { break outermost; } num++; } } alert(num); //55
Dalam contoh di atas, label paling luar mewakili yang pertama untuk pernyataan. Biasanya, setiap pernyataan untuk melaksanakan blok kod 10 kali, yang bermaksud bahawa num akan dilaksanakan 100 kali dalam keadaan biasa, dan apabila pelaksanaan selesai, num harus sama dengan 100. Pernyataan break di sini mempunyai satu parameter, iaitu label pernyataan untuk melompat ke selepas menghentikan gelung. Dengan cara ini, pernyataan break bukan sahaja boleh melompat keluar dari dalam untuk pernyataan (iaitu, pernyataan yang menggunakan pembolehubah j), tetapi juga melompat keluar dari luar untuk pernyataan (iaitu, pernyataan yang menggunakan pembolehubah i). Oleh itu, nilai akhir num ialah 55, kerana gelung akan ditamatkan apabila nilai i dan j kedua-duanya sama dengan 5.
Pernyataan continue boleh digunakan dengan cara yang sama:
var iNum = 0; outermost: for (var i=0; i<10; i++) { for (var j=0; j<10; j++) { if (i == 5 && j == 5) { continue outermost; } iNum++; } } alert(iNum); //输出 "95"
Dalam contoh di atas, pernyataan continue akan memaksa gelung untuk meneruskan, bukan sahaja gelung dalam, tetapi juga gelung luar. Ini berlaku apabila j sama dengan 5, bermakna gelung dalam akan dikurangkan sebanyak 5 lelaran, menyebabkan iNum mempunyai nilai 95.
Petua: Seperti yang anda lihat, pernyataan berlabel yang digunakan bersama dengan break dan continue adalah sangat berkuasa, tetapi penggunaan berlebihan boleh menyebabkan masalah semasa menyahpepijat kod anda. Pastikan label yang anda gunakan adalah deskriptif dan tidak meletakkan terlalu banyak peringkat gelung.
Di atas adalah ringkasan pembelajaran JavaScript hari ini, dan ia akan terus dikemas kini setiap hari.