Contoh dalam artikel ini berkongsi kemahiran pembelajaran pengaturcaraan JavaScript untuk rujukan anda. Kandungan khusus adalah seperti berikut
1. Penukaran pembolehubah
varmyVar="3.14159", str=""+myVar,//tostring int=~~myVar,//tointeger float=1*myVar,//tofloat bool=!!myVar,/*toboolean-anystringwithlength andanynumberexcept0aretrue*/ array=[myVar];//toarray
Walau bagaimanapun, anda mesti menggunakan pembina untuk menukar tarikh (Tarikh baharu(myVar)) dan ungkapan biasa (RegExp(myVar) baharu, gunakan borang yang dipermudahkan seperti /pattern/flags.
2. Bundarkan dan tukar kepada nilai berangka pada masa yang sama
//字符型变量参与运算时,JS会自动将其转换为数值型(如果无法转化,变为NaN) '10.567890'|0 //结果:10 //JS里面的所有数值型都是双精度浮点数,因此,JS在进行位运算时,会首先将这些数字运算数转换为整数,然后再执行运算 //|是二进制或,x|0永远等于x;^为异或,同0异1,所以x^0还是永远等于x;至于~是按位取反,搞了两次以后值当然是一样的 '10.567890'^0 //结果:10 -2.23456789|0 //结果:-2
3. Tukar tarikh kepada nilai
//JS本身时间的内部表示形式就是Unix时间戳,以毫秒为单位记录着当前距离1970年1月1日0点的时间单位 vard=+newDate();//1295698416792
4. Tukar objek seperti tatasusunan kepada tatasusunan
vararr=[].slice.call(arguments) 下面的实例用的更绝 functiontest(){ varres=['item1','item2'] res=res.concat(Array.prototype.slice.call(arguments))//方法1 Array.prototype.push.apply(res,arguments)//方法2 }
5. Penukaran antara pangkalan
(int).toString(16);//convertsinttohex,eg12=>"C" (int).toString(8);//convertsinttooctal,eg.12=>"14" parseInt(string,16)//convertshextoint,eg."FF"=>255 parseInt(string,8)//convertsoctaltoint,eg."20"=>16 将一个数组插入另一个数组指定的位置 vara=[1,2,3,7,8,9]; varb=[4,5,6]; varinsertIndex=3; a.splice.apply(a,Array.prototype.concat(insertIndex,0,b));
6. Padamkan elemen tatasusunan
vara=[1,2,3,4,5]; a.splice(3,1);//a=[1,2,3,5]
Anda mungkin tertanya-tanya mengapa anda perlu menggunakan splice dan bukannya padam, kerana menggunakan padam akan meninggalkan lubang dalam tatasusunan, dan subskrip berikutnya tidak akan dikurangkan.
7. Tentukan sama ada IE
varie=/*@cc_on!@*/false;
Ayat mudah sebegini boleh menentukan sama ada ianya juga. . .
Malah, ada cara yang lebih menarik, sila lihat di bawah
//edithttp://www.lai18.com //貌似是最短的,利用IE不支持标准的ECMAscript中数组末逗号忽略的机制 varie=!-[1,]; //利用了IE的条件注释 varie=/*@cc_on!@*/false; //还是条件注释 varie//@cc_on=1; //IE不支持垂直制表符 varie='v'=='v'; //原理同上 varie=!+"v1";
Masa saya belajar ini, saya berasa lemah.
Gunakan kaedah asli sebanyak mungkin
Untuk mencari nombor maksimum dalam set nombor, kita mungkin menulis gelung, contohnya:
varnumbers=[3,342,23,22,124]; varmax=0; for(vari=0;i if(numbers[i]>max){ max=numbers[i]; } } alert(max);
Malah, ia boleh dilaksanakan dengan lebih mudah menggunakan kaedah asli
varnumbers=[3,342,23,22,124]; numbers.sort(function(a,b){returnb-a}); alert(numbers[0]);
Sudah tentu kaedah yang paling mudah ialah:
Math.max(12,123,3,2,433,4);//returns433
Ini juga boleh dilakukan sekarang
[xhtml]view plaincopy Math.max.apply(Math,[12,123,3,2,433,4])//取最大值 Math.min.apply(Math,[12,123,3,2,433,4])//取最小值
8. Hasilkan nombor rawak
Math.random().toString(16).substring(2);//toString()函数的参数为基底,范围为2~36。 Math.random().toString(36).substring(2);
Tukar nilai dua pembolehubah tanpa menggunakan pembolehubah pihak ketiga
a=[b,b=a][0];
9. Delegasi acara
Kod js adalah seperti berikut:
//Classiceventhandlingexample (function(){ varresources=document.getElementById('resources'); varlinks=resources.getElementsByTagName('a'); varall=links.length; for(vari=0;i //Attachalistenertoeachlink links[i].addEventListener('click',handler,false); }; functionhandler(e){ varx=e.target;//Getthelinkthatwasclicked alert(x); e.preventDefault(); }; })();
Gunakan delegasi acara untuk menulis dengan lebih elegan:
(function(){ varresources=document.getElementById('resources'); resources.addEventListener('click',handler,false); functionhandler(e){ varx=e.target;//getthelinktha if(x.nodeName.toLowerCase()==='a'){ alert('Eventdelegation:'+x); e.preventDefault(); } }; })();
10. iaitu versi
var_IE=(function(){ varv=3,div=document.createElement('div'),all=div.getElementsByTagName('i'); while( div.innerHTML='', all[0] ); returnv>4?v:false; }());
pengesanan versi javaScript
Adakah anda tahu versi Javascript yang mana pelayar anda menyokong?
varJS_ver=[]; (Number.prototype.toFixed)?JS_ver.push("1.5"):false; ([].indexOf&&[].forEach)?JS_ver.push("1.6"):false; ((function(){try{[a,b]=[0,1];returntrue;}catch(ex){returnfalse;}})())?JS_ver.push("1.7"):false; ([].reduce&&[].reduceRight&&JSON)?JS_ver.push("1.8"):false; ("".trimLeft)?JS_ver.push("1.8.1"):false; JS_ver.supports=function() { if(arguments[0]) return(!!~this.join().indexOf(arguments[0]+",")+","); else return(this[this.length-1]); } alert("LatestJavascriptversionsupported:"+JS_ver.supports()); alert("Supportforversion1.7:"+JS_ver.supports("1.7"));
11. Tentukan sama ada atribut itu wujud
//BAD:Thiswillcauseanerrorincodewhenfooisundefined if(foo){ doSomething(); } //GOOD:Thisdoesn'tcauseanyerrors.However,evenwhen //fooissettoNULLorfalse,theconditionvalidatesastrue if(typeoffoo!="undefined"){ doSomething(); } //BETTER:Thisdoesn'tcauseanyerrorsandinaddition //valuesNULLorfalsewon'tvalidateastrue if(window.foo){ doSomething(); }
Kadangkala kami mempunyai struktur yang lebih dalam dan memerlukan pemeriksaan yang lebih sesuai
//UGLY:wehavetoproofexistenceofevery //objectbeforewecanbesurepropertyactuallyexists if(window.oFoo&&oFoo.oBar&&oFoo.oBar.baz){ doSomething(); }
Malah, cara terbaik untuk mengesan sama ada atribut wujud ialah:
if("opera"inwindow){ console.log("OPERA"); }else{ console.log("NOTOPERA"); }
12. Periksa sama ada objek itu ialah tatasusunan
varobj=[]; Object.prototype.toString.call(obj)=="[objectArray]";
Di atas adalah keseluruhan kandungan artikel ini saya harap ia akan membantu semua orang dalam mempelajari pengaturcaraan javascript.