1 ǰÑÔ
JavaScript ÊÇÒ»ÖÖÖ±Òëʽ½Å±¾ÓïÑÔ£¬Ò²ÊÇÒ»ÖÖ¶¯Ì¬ÀàÐÍ¡¢ÈõÀàÐÍ¡¢»ùÓÚÔÐ͵ÄÓïÑÔ¡£ËüµÄ½âÊÍÆ÷±»³ÆÎª
JavaScript ÒýÇæ£¬Îªä¯ÀÀÆ÷µÄÒ»²¿·Ö£¬Òò´ËÆäÒ²ÊÇÒ»ÖÖ±»¹ã·ºÓÃÓÚ¿Í»§¶ËµÄ½Å±¾ÓïÑÔ£¬×îÔçÊÇÔÚ HTML
ÍøÒ³ÉÏʹÓã¬ÓÃÀ´¸ø HTML ÍøÒ³Ôö¼Ó¶¯Ì¬¹¦ÄÜ¡£ÏÖÔÚ£¬JavaScript ÒѾ³ÉΪÁ˵±½ñʹÓÃ×îΪ¹ã·º¡¢×îÊÜ»¶ÓµÄÓïÑÔÖ®Ò»£¬¶àÁ˽âһЩ
JavaScript µÄʹÓü¼ÇÉ£¬µ±È»ÊÇÓÐÒæÎÞº¦À²£¡
2 ÄÚÈÝ
JavaScript ÊÇÒ»¸ö¾ø¹ÚÈ«ÇòµÄ±à³ÌÓïÑÔ£¬¿ÉÓÃÓÚ Web ¿ª·¢¡¢Òƶ¯Ó¦Óÿª·¢£¨PhoneGap
ºÍ Appcelerator£©¡¢·þÎñÆ÷¶Ë¿ª·¢£¨Node.js ºÍ Wakanda£©µÈµÈ¡£JavaScript
»¹ÊǺܶàÐÂÊÖ̤Èë±à³ÌÊÀ½çµÄµÚÒ»¸öÓïÑÔ£¬¼È¿ÉÒÔÓÃÀ´ÏÔʾä¯ÀÀÆ÷Öеļòµ¥Ìáʾ¿ò£¬Ò²¿ÉÒÔͨ¹ý nodebot »ò
nodruino À´¿ØÖÆ»úÆ÷ÈË¡£Äܹ»±àд½á¹¹ÇåÎú¡¢ÐÔÄܸßЧµÄ JavaScript ´úÂëµÄ¿ª·¢ÈËÔ±£¬ÏÖÈç½ñÒѳÉÁËÕÐÆ¸Êг¡×îÊÜ×·ÅõµÄÈË¡£
ÔÚÕâÆªÎÄÕÂÀÎÒ½«·ÖÏíһЩ JavaScript µÄ¼¼ÇÉ¡¢Ãؾ÷ºÍ×î¼Ñʵ¼ù£¬³ýÁËÉÙÊý¼¸¸öÍ⣬²»¹ÜÊÇä¯ÀÀÆ÷µÄ
JavaScript ÒýÇæ£¬»¹ÊÇ·þÎñÆ÷¶Ë JavaScript ½âÊÍÆ÷£¬¾ùÊÊÓá£
±¾ÎÄÖеÄʾÀý´úÂ룬ͨ¹ýÁËÔÚ Google Chrome 30 ×îа棨V8 3.20.17.15£©ÉϵIJâÊÔ¡£
1. Ê×´ÎΪ±äÁ¿¸³ÖµÊ±Îñ±ØÊ¹Óà var ¹Ø¼ü×Ö
±äÁ¿Ã»ÓÐÉùÃ÷¶øÖ±½Ó¸³ÖµµÃ»°£¬Ä¬ÈÏ»á×÷Ϊһ¸öеÄÈ«¾Ö±äÁ¿£¬Òª¾¡Á¿±ÜÃâʹÓÃÈ«¾Ö±äÁ¿¡£
2. ʹÓà === È¡´ú ==
==ºÍ!=²Ù×÷·û»áÔÚÐèÒªµÄÇé¿öÏÂ×Ô¶¯×ª»»Êý¾ÝÀàÐÍ¡£µ«===ºÍ!==²»»á£¬ËüÃÇ»áͬʱ±È½ÏÖµºÍÊý¾ÝÀàÐÍ£¬ÕâҲʹµÃËüÃÇÒª±È==ºÍ!=¿ì¡£
[10] === 10 // is false [10] == 10 // is true '10' == 10 // is true '10' === 10 // is false [] == 0 // is true [] === 0 // is false '' == false // is true but true == "a" is false '' === false // is false |
3. underfined¡¢null¡¢0¡¢false¡¢NaN¡¢¿Õ×Ö·û´®µÄÂß¼½á¹û¾ùΪ false
4. ÐÐβʹÓ÷ֺÅ
ʵ¼ùÖÐ×îºÃ»¹ÊÇʹÓ÷ֺţ¬ÍüÁËдҲûÊ£¬´ó²¿·ÖÇé¿öÏ JavaScript ½âÊÍÆ÷¶¼»á×Ô¶¯Ìí¼Ó¡£¶ÔÓÚΪºÎҪʹÓ÷ֺţ¬¿É²Î¿¼ÎÄÕÂ
JavaScript ÖйØÓڷֺŵÄÕæÏà¡£
5. ʹÓöÔÏó¹¹ÔìÆ÷
function Person(firstName, lastName){ this.firstName = firstName; this.lastName = lastName; } var Saad = new Person("Saad", "Mousliki"); |
6. СÐÄʹÓà typeof¡¢instanceof ºÍ contructor
typeof£ºJavaScript Ò»Ôª²Ù×÷·û£¬ÓÃÓÚÒÔ×Ö·û´®µÄÐÎʽ·µ»Ø±äÁ¿µÄÔʼÀàÐÍ£¬×¢Ò⣬typeof
null Ò²»á·µ»Ø object£¬´ó¶àÊýµÄ¶ÔÏóÀàÐÍ£¨Êý×é Array¡¢Ê±¼ä Date µÈ£©Ò²»á·µ»Ø object£»
instanceof£ºJavaScript²Ù×÷·û£¬»áÔÚÔÐÍÁ´ÖеĹ¹ÔìÆ÷ÖÐËÑË÷£¬ÕÒµ½Ôò·µ»Øtrue£¬·ñÔò·µ»Øfalse£»
contructor£ºÄÚ²¿ÔÐÍÊôÐÔ£¬¿ÉÒÔͨ¹ý´úÂëÖØÐ´¡£
var arr = ["a", "b", "c"]; typeof arr; // ·µ»Ø "object" arr instanceof Array // true arr.constructor(); //[] |
7. ʹÓÃ×Ôµ÷Óú¯Êý
º¯ÊýÔÚ´´½¨Ö®ºóÖ±½Ó×Ô¶¯Ö´ÐУ¬Í¨³£³ÆÖ®Îª×Ôµ÷ÓÃÄäÃûº¯Êý£¨Self-Invoked Anonymous Function£©»òÖ±½Óµ÷Óú¯Êý±í´ïʽ£¨Immediately
Invoked Function Expression £©£¬Æä¸ñʽÈçÏ£º
(function(){ // ÖÃÓÚ´Ë´¦µÄ´úÂ뽫×Ô¶¯Ö´ÐÐ })(); (function(a, b){ var result = a + b; return result; })(10, 20) |
8. ´ÓÊý×éÖÐËæ»ú»ñÈ¡³ÉÔ±
var items = [12, 548 , 'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' , 2145 , 119]; var randomItem = items[Math.floor(Math.random() * items.length)]; |
9. »ñȡָ¶¨·¶Î§ÄÚµÄËæ»úÊý
Õâ¸ö¹¦ÄÜÔÚÉú³É²âÊÔÓõļÙÊý¾ÝÊ±ÌØ±ðÓÐÊý£¬±ÈÈç½éÓëÖ¸¶¨·¶Î§ÄڵŤ×ÊÊý¡£
var x = Math.floor(Math.random() * (max - min + 1)) + min; |
10. Éú³É´Ó 0 µ½Ö¸¶¨ÖµµÄÊý×ÖÊý×é
var numbersArray = [] , max = 100; for( var i=1; numbersArray.push(i++) < max;); // numbers = [1,2,3 ... 100] |
11. Éú³ÉËæ»úµÄ×ÖĸÊý×Ö×Ö·û´®
function generateRandomAlphaNum(len) { var rdmString = ""; for( ; rdmString.length < len; rdmString += Math.random().toString(36).substr(2)); return rdmString.substr(0, len); } |
12. ´òÂÒÊý×ÖÊý×éµÄ˳Ðò
var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; numbers = numbers.sort(function(){ return Math.random() - 0.5}); /* numbers Êý×齫ÀàËÆÓÚ [120, 5, 228, -215, 400, 458, -85411, 122205] */ |
ÕâÀïʹÓÃÁË JavaScript ÄÚÖõÄÊý×éÅÅÐòº¯Êý£¬¸üºÃµÄ°ì·¨ÊÇÓÃרÃŵĴúÂëÀ´ÊµÏÖ£¨Èç Fisher-Yates
Ëã·¨£©£¬¿ÉÒԲμû StackOverFlow ÉϵÄÌÖÂÛ¡£
13. ×Ö·û´®È¥¿Õ¸ñ
Java¡¢C# ºÍ PHP µÈÓïÑÔ¶¼ÊµÏÖÁËרÃŵÄ×Ö·û´®È¥¿Õ¸ñº¯Êý£¬µ« JavaScript ÖÐÊÇûÓеģ¬¿ÉÒÔͨ¹ýÏÂÃæµÄ´úÂëÀ´Îª
String ¶ÔÏó¶¨ÒåÒ»¸ötrimº¯Êý£º
String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g, "");}; |
Ð嵀 JavaScript ÒýÇæÒѾÓÐÁËtrim()µÄÔÉúʵÏÖ¡£
14. Êý×éÖ®¼ä×·¼Ó
var array1 = [12 , "foo" , {name "Joe"} , -2458]; var array2 = ["Doe" , 555 , 100]; Array.prototype.push.apply(array1, array2); /* array1 ֵΪ [12 , "foo" , {name "Joe"} , -2458 , "Doe" , 555 , 100] */ |
15. ¶ÔÏóת»»ÎªÊý×é
var argArray = Array.prototype.slice.call(arguments); |
16. ÑéÖ¤ÊÇ·ñÊÇÊý×Ö
function isNumber(n){ return !isNaN(parseFloat(n)) && isFinite(n); } |
17. ÑéÖ¤ÊÇ·ñÊÇÊý×é
function isArray(obj){ return Object.prototype.toString.call(obj) === '[object Array]' ; } |
µ«Èç¹ûtoString()·½·¨±»ÖØÐ´¹ýµÃ»°£¬¾ÍÐв»Í¨ÁË¡£Ò²¿ÉÒÔʹÓÃÏÂÃæµÄ·½·¨£º
Array.isArray(obj); // its a new Array method |
Èç¹ûÔÚä¯ÀÀÆ÷ÖÐûÓÐʹÓÃframe£¬»¹¿ÉÒÔÓÃinstanceof£¬µ«Èç¹ûÉÏÏÂÎÄÌ«¸´ÔÓ£¬Ò²ÓпÉÄܳö´í¡£
var myFrame = document.createElement('iframe'); document.body.appendChild(myFrame); var myArray = window.frames[window.frames.length-1].Array; var arr = new myArray(a,b,10); // [a,b,10] // myArray µÄ¹¹ÔìÆ÷ÒѾ¶ªÊ§£¬instanceof µÄ½á¹û½«²»Õý³£ // ¹¹ÔìÆ÷ÊDz»ÄÜ¿ç frame ¹²ÏíµÄ arr instanceof Array; // false |
18. »ñÈ¡Êý×éÖеÄ×î´óÖµºÍ×îСֵ
var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411]; var maxInNumbers = Math.max.apply(Math, numbers); var minInNumbers = Math.min.apply(Math, numbers); |
19. Çå¿ÕÊý×é
var myArray = [12 , 222 , 1000 ]; myArray.length = 0; // myArray will be equal to [] |
20. ²»ÒªÖ±½Ó´ÓÊý×éÖÐ delete »ò remove ÔªËØ
Èç¹û¶ÔÊý×éÔªËØÖ±½ÓʹÓÃdelete£¬Æäʵ²¢Ã»ÓÐɾ³ý£¬Ö»Êǽ«ÔªËØÖÃΪÁËundefined£¬Êý×éÔªËØÉ¾³ýӦʹÓÃsplice¡£
Çмɣº
var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' ,2154 , 119 ]; items.length; // return 11 delete items[3]; // return true items.length; // return 11 /* items ½á¹ûΪ [12, 548, "a", undefined ¡Á 1, 5478, "foo", 8852, undefined ¡Á 1, "Doe", 2154, 119] */ |
¶øÓ¦£º
var items = [12, 548 ,'a' , 2 , 5478 , 'foo' , 8852, , 'Doe' ,2154 , 119 ]; items.length; // return 11 items.splice(3,1) ; items.length; // return 10 /* items ½á¹ûΪ [12, 548, "a", 5478, "foo", 8852, undefined ¡Á 1, "Doe", 2154, 119] |
ɾ³ý¶ÔÏóµÄÊôÐÔʱ¿ÉÒÔʹÓÃdelete¡£
21. ʹÓÃlengthÊôÐԽضÏÊý×é
Ç°ÃæµÄÀý×ÓÖÐÓÃlengthÊôÐÔÇå¿ÕÊý×飬ͬÑù»¹¿ÉÓÃËüÀ´½Ø¶ÏÊý×飺
var myArray = [12 , 222 , 1000 , 124 , 98 , 10 ]; myArray.length = 4; // myArray will be equal to [12 , 222 , 1000 , 124] |
Óë´Ëͬʱ£¬Èç¹û°ÑlengthÊôÐÔ±ä´ó£¬Êý×éµÄ³¤¶ÈÖµ±ä»áÔö¼Ó£¬»áʹÓÃundefinedÀ´×÷ΪеÄÔªËØÌî³ä¡£lengthÊÇÒ»¸ö¿ÉдµÄÊôÐÔ¡£
myArray.length = 10; // the new array length is 10 myArray[myArray.length - 1] ; // undefined |
22. ÔÚÌõ¼þÖÐʹÓÃÂß¼Óë»ò
var foo = 10; foo == 10 && doSomething(); // is the same thing as if (foo == 10) doSomething(); foo == 5 || doSomething(); // is the same thing as if (foo != 5) doSomething(); |
Âß¼»ò»¹¿ÉÓÃÀ´ÉèÖÃĬÈÏÖµ£¬±ÈÈ纯Êý²ÎÊýµÄĬÈÏÖµ£º
function doSomething(arg1){ arg1 = arg1 || 10; // arg1 will have 10 as a default value if it¡¯s not already set } |
23. ʹÓà map() º¯Êý·½·¨¶ÔÊý¾ÝÑ»·
var squares = [1,2,3,4].map(function (val) { return val * val; }); // squares will be equal to [1, 4, 9, 16] |
24. ±£ÁôÖ¸¶¨Ð¡ÊýλÊý
var num =2.443242342; num = num.toFixed(4); // num will be equal to 2.4432 |
×¢Ò⣬toFixec()·µ»ØµÄÊÇ×Ö·û´®£¬²»ÊÇÊý×Ö¡£
25. ¸¡µã¼ÆËãµÄÎÊÌâ
0.1 + 0.2 === 0.3 // is false 9007199254740992 + 1 // is equal to 9007199254740992 9007199254740992 + 2 // is equal to 9007199254740994 |
ÎªÊ²Ã´ÄØ£¿ÒòΪ 0.1 + 0.2 µÈÓÚ 0.30000000000000004¡£JavaScript
µÄÊý×Ö¶¼×ñÑ IEEE 754 ±ê×¼¹¹½¨£¬ÔÚÄÚ²¿¶¼ÊÇ 64 λ¸¡µãСÊý±íʾ£¬¾ßÌå¿ÉÒԲμû JavaScriptÖеÄÊý×ÖÊÇÈçºÎ±àÂëµÄ¡£
¿ÉÒÔͨ¹ýʹÓÃtoFixed()ºÍtoPrecision()À´½â¾öÕâ¸öÎÊÌâ¡£
26. ͨ¹ý for in Ñ»·¼ì²é¶ÔÏóµÄÊôÐÔ
ÏÂÃæÕâÑùµÄÓ÷¨£¬¿ÉÒÔ·ÀÖ¹µü´úµÄʱºò½øÈëµ½¶ÔÏóµÄÔÐÍÊôÐÔÖС£
for (var name in object) { if (object.hasOwnProperty(name)) { // do something with name } } |
27. ¶ººÅ²Ù×÷·û
var a = 0; var b = ( a++, 99 ); console.log(a); // a will be equal to 1 console.log(b); // b is equal to 99 |
28. ÁÙʱ´æ´¢ÓÃÓÚ¼ÆËãºÍ²éѯµÄ±äÁ¿
ÔÚ jQuery Ñ¡ÔñÆ÷ÖУ¬¿ÉÒÔÁÙʱ´æ´¢Õû¸öDOMÔªËØ¡£
var navright = document.querySelector('#right'); var navleft = document.querySelector('#left'); var navup = document.querySelector('#up'); var navdown = document.querySelector('#down'); |
29. Ìáǰ¼ì²é´«Èë isFinite() µÄ²ÎÊý
isFinite(0/0) ; // false isFinite("foo"); // false isFinite("10"); // true isFinite(10); // true isFinite(undefined); // false isFinite(); // false isFinite(null); // true£¬Õâµãµ±Ìرð×¢Òâ |
30. ±ÜÃâÔÚÊý×éÖÐʹÓøºÊý×öË÷Òý
var numbersArray = [1,2,3,4,5]; var from = numbersArray.indexOf("foo") ; // from is equal to -1 numbersArray.splice(from,2); // will return [5] |
×¢Òâ´«¸øspliceµÄË÷Òý²ÎÊý²»ÒªÊǸºÊý£¬µ±ÊǸºÊýʱ£¬»á´ÓÊý×é½áβ´¦É¾³ýÔªËØ¡£
31. Óà JSON À´ÐòÁл¯Óë·´ÐòÁл¯
var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} }; var stringFromPerson = JSON.stringify(person); /* stringFromPerson ½á¹ûΪ "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}" */ var personFromString = JSON.parse(stringFromPerson); /* personFromString µÄÖµÓë person ¶ÔÏóÏàͬ */ |
32. ²»ÒªÊ¹Óà eval() »òÕߺ¯Êý¹¹ÔìÆ÷
eval()ºÍº¯Êý¹¹ÔìÆ÷£¨Function consturctor£©µÄ¿ªÏú½Ï´ó£¬Ã¿´Îµ÷Óã¬JavaScriptÒý
Çæ¶¼Òª½«Ô´´úÂëת»»Îª¿ÉÖ´ÐеĴúÂë¡£
var func1 = new Function(functionCode); var func2 = eval(functionCode); |
33. ±ÜÃâʹÓà with()
ʹÓÃwith()¿ÉÒ԰ѱäÁ¿¼ÓÈ뵽ȫ¾Ö×÷ÓÃÓòÖУ¬Òò´Ë£¬Èç¹ûÓÐÆäËüµÄͬÃû±äÁ¿£¬Ò»À´ÈÝÒ×»ìÏý£¬¶þÀ´ÖµÒ²»á±»¸²¸Ç¡£
34. ²»Òª¶ÔÊý×éʹÓà for in
±ÜÃ⣺
var sum = 0; for (var i in arrayNumbers) { sum += arrayNumbers[i]; } |
¶øÊÇ£º
var sum = 0; for (var i = 0, len = arrayNumbers.length; i < len; i++) { sum += arrayNumbers[i]; } |
ÁíÍâÒ»¸öºÃ´¦ÊÇ£¬iºÍlenÁ½¸ö±äÁ¿ÊÇÔÚforÑ»·µÄµÚÒ»¸öÉùÃ÷ÖУ¬¶þÕßÖ»»á³õʼ»¯Ò»´Î£¬ÕâÒª±ÈÏÂÃæÕâÖÖд·¨¿ì£º
for (var i = 0; i < arrayNumbers.length; i++) |
35. ´«¸ø setInterval() ºÍ setTimeout() ʱʹÓú¯Êý¶ø²»ÊÇ×Ö·û´®
Èç¹û´«¸øsetTimeout()ºÍsetInterval()Ò»¸ö×Ö·û´®£¬ËûÃǽ«»áÓÃÀàËÆÓÚeval·½Ê½½øÐÐת»»£¬Õâ¿Ï¶¨»áÒªÂýЩ£¬Òò´Ë²»ÒªÊ¹Óãº
setInterval('doSomethingPeriodically()', 1000); setTimeout('doSomethingAfterFiveSeconds()', 5000); |
¶øÊÇÓãº
setInterval(doSomethingPeriodically, 1000); setTimeout(doSomethingAfterFiveSeconds, 5000); |
36. ʹÓà switch case ´úÌæÒ»´óµþµÄ if else
µ±ÅжÏÓг¬¹ýÁ½¸ö·ÖÖ§µÄʱºòʹÓà switch case Òª¸ü¿ìһЩ£¬¶øÇÒÒ²¸üÓÅÑÅ£¬¸üÀûÓÚ´úÂëµÄ×éÖ¯£¬µ±È»£¬Èç¹ûÓг¬¹ý
10 ¸ö·ÖÖ§£¬¾Í²»ÒªÊ¹Óà switch case ÁË¡£
37. ÔÚ switch case ÖÐʹÓÃÊý×ÖÇø¼ä
Æäʵ£¬switch caseÖÐµÄ case Ìõ¼þ£¬»¹¿ÉÒÔÕâÑùд£º
function getCategory(age) { var category = ""; switch (true) { case isNaN(age): category = "not an age"; break; case (age >= 50): category = "Old"; break; case (age <= 20): category = "Baby"; break; default: category = "Young"; break; }; return category; } getCategory(5); // ½«·µ»Ø "Baby" |
38. ʹÓöÔÏó×÷Ϊ¶ÔÏóµÄÔÐÍ
ÏÂÃæÕâÑù£¬±ã¿ÉÒÔ¸ø¶¨¶ÔÏó×÷Ϊ²ÎÊý£¬À´´´½¨ÒÔ´ËΪÔÐ͵ÄжÔÏó£º
function clone(object) { function OneShotConstructor(){}; OneShotConstructor.prototype = object; return new OneShotConstructor(); } clone(Array).prototype ; // [] |
39. HTML ×Ö¶Îת»»º¯Êý
function escapeHTML(text) { var replacements= {"<": "<", ">": ">","&": "&", "\"": """}; return text.replace(/[<>&"]/g, function(character) { return replacements[character]; }); } |
40 ²»ÒªÔÚÑ»·ÄÚ²¿Ê¹Óà try catch finally
try catch finally ÖÐ catch ²¿·ÖÔÚÖ´ÐÐʱ»á½«Òì³£¸³¸øÒ»¸ö±äÁ¿£¬Õâ¸ö±äÁ¿»á±»¹¹½¨³ÉÒ»¸öÔËÐÐʱ×÷ÓÃÓòÄÚµÄеıäÁ¿¡£
Çмɣº
var object = ['foo', 'bar'], i; for (i = 0, len = object.length; i <len; i++) { try { // do something that throws an exception } catch (e) { // handle exception } } |
¶øÓ¦¸Ã£º
var object = ['foo', 'bar'], i; try { for (i = 0, len = object.length; i <len; i++) { // do something that throws an exception } } catch (e) { // handle exception } |
41. ʹÓà XMLHttpRequests ʱעÒâÉèÖó¬Ê±
XMLHttpRequests ÔÚÖ´ÐÐʱ£¬µ±³¤Ê±¼äûÓÐÏìÓ¦£¨Èç³öÏÖÍøÂçÎÊÌâµÈ£©Ê±£¬Ó¦¸ÃÖÐÖ¹µôÁ¬½Ó£¬¿ÉÒÔͨ¹ýsetTimeout()À´Íê³ÉÕâ¸ö¹¤×÷£º
var xhr = new XMLHttpRequest (); xhr.onreadystatechange = function () { if (this.readyState == 4) { clearTimeout(timeout); // do something with response data } } var timeout = setTimeout( function () { xhr.abort(); // call error callback }, 60*1000 /* timeout after a minute */ ); xhr.open('GET', url, true); xhr.send(); |
ͬʱÐèҪעÒâµÄÊÇ£¬²»ÒªÍ¬Ê±·¢Æð¶à¸ö XMLHttpRequests ÇëÇó¡£
42. ´¦Àí WebSocket µÄ³¬Ê±
ͨ³£Çé¿öÏ£¬WebSocket Á¬½Ó´´½¨ºó£¬Èç¹û 30 ÃëÄÚûÓÐÈκλ£¬·þÎñÆ÷¶Ë»á¶ÔÁ¬½Ó½øÐг¬Ê±´¦Àí£¬·À»ðǽҲ¿ÉÒÔ¶Ôµ¥Î»ÖÜÆÚûÓлµÄÁ¬½Ó½øÐг¬Ê±´¦Àí¡£
ΪÁË·ÀÖ¹ÕâÖÖÇé¿öµÄ·¢Éú£¬¿ÉÒÔÿ¸ôÒ»¶¨Ê±¼ä£¬Íù·þÎñÆ÷·¢ËÍÒ»Ìõ¿ÕµÄÏûÏ¢¡£¿ÉÒÔͨ¹ýÏÂÃæÕâÁ½¸öº¯ÊýÀ´ÊµÏÖÕâ¸öÐèÇó£¬Ò»¸öÓÃÓÚʹÁ¬½Ó±£³Ö»î¶¯×´Ì¬£¬ÁíÒ»¸öרÃÅÓÃÓÚ½áÊøÕâ¸ö״̬¡£
var timerID = 0; function keepAlive() { var timeout = 15000; if (webSocket.readyState == webSocket.OPEN) { webSocket.send(''); } timerId = setTimeout(keepAlive, timeout); } function cancelKeepAlive() { if (timerId) { cancelTimeout(timerId); } } |
keepAlive()º¯Êý¿ÉÒÔ·ÅÔÚ WebSocket Á¬½ÓµÄonOpen()·½·¨µÄ×îºóÃæ£¬cancelKeepAlive()·ÅÔÚonClose()·½·¨µÄ×îĩβ¡£
43. ʱ¼ä×¢ÒâÔʼ²Ù×÷·û±Èº¯Êýµ÷Óÿ죬ʹÓà VanillaJS
±ÈÈ磬һ°ã²»ÒªÕâÑù£º
var min = Math.min(a,b); A.push(v); |
¿ÉÒÔÕâÑùÀ´´úÌæ£º
var min = a < b ? a : b; A[A.length] = v; |
44. ¿ª·¢Ê±×¢Òâ´úÂë½á¹¹£¬ÉÏÏßǰ¼ì²é²¢Ñ¹Ëõ JavaScript ´úÂë
±ðÍüÁËÔÚд´úÂëʱʹÓÃÒ»¸ö´úÂëÃÀ»¯¹¤¾ß£¬Ê¹Óà JSLint£¨Ò»¸öÓï·¨¼ì²é¹¤¾ß£©²¢ÇÒÔÚÉÏÏßǰѹËõ´úÂ루±ÈÈçʹÓÃ
JSMin£©£¬×¢£ºÏÖÔÚ´úÂëѹËõÒ»°ãÍÆ¼ö UglifyJS £¨https://github.com/mishoo/UglifyJS2£©¡£
45. JavaScript ²©´ó¾«ÉÕâÀïÓÐЩ²»´íµÄѧϰ×ÊÔ´
Code Academy ×ÊÔ´£ºhttp://www.codecademy.com/tracks/javascript
Marjin Haverbekex ±àдµÄ Eloquent JavaScript£ºhttp://eloquentjavascript.net/
John Resig ±àдµÄ Advanced JavaScript£ºhttp://ejohn.org/apps/learn/ |