Variable conversions
var myVar = "3.14159", str = "" "+ myVar,// String type int / /number type float // number type bool // Boolean type array // Array type
however, the conversion date (new date (myVar)) and the regular expression (new RegExp (myVar)) must use the constructor, and a simplified form such as/pattern/flags is used when creating the regular Expression.
Rounding and converting to numerical type
//when a character variable participates in an operation, JS automatically converts it to a numeric type (if it cannot be converted, it becomes Nan)' 10.567890 ' | 0//Ten//all numerical types in JS are double-precision floating-point numbers.//As a result, JS will first convert these numeric operands to integers when performing bit operations, and then perform the operations//| is binary or, x|0 is always equal to x;//^ for xor, same as 0 xor 1, so x^0 is always equal to x;//~ is a bitwise reverse, two times after the value of course is the same' 10.567890 ' ^ 0//Results: Ten-2.23456789 | 0//-2~~2.23456789//2~~-2.23456789//-2~-2.23456789//1~2.23456789//-3
Date to Value
// the internal representation of the time of JS itself is the UNIX timestamp, which records the current unit of time in milliseconds from 0 o'clock January 1, 1970. var d = +new//1488947616099
Class Array object to array
var arr =[].slice.call (arguments)
The following example:
function test () { var res = [' a ', ' B ']; // Method 1 res = Res.concat ([].slice.call (arguments,0)); // 0 can be omitted to indicate interception from the start position // Method 2 Array.prototype.push.apply (res, arguments);} Test (' C ', ' d '); // ["a", "b", "c", "d"]
Conversion between the binaries
(int// converts int to hex, eg + = "C"(int// converts int to octal, eg. "+"// converts hex to int, eg. "FF" = 255// converts octal to int, eg. "+"
Determine if it is IE
//Edit Http://www.lai18.com//seemingly the shortest, using IE does not support the standard ECMAScript of the array in the end of the comma-ignored mechanismvarIE =!-[1,];//using the conditional annotations of IEvarie =/*@[email protected]*/false;//or conditional commentvarIe//@cc_on =1;//IE does not support vertical tabsvarie = ' \v ' = = ' V ';//Principle Ibid .varIE =!+ "\v1";
Try to use native methods
To find the largest number in a set of numbers, we might write a loop, for example:
var numbers = [3,342,23,22,124]; var max = 0; for (var i=0;i<numbers.length;i++if(numbers[i] > max) { = numbers[i]; }}alert (max);
In fact, using the native method, can be more simple to achieve
var numbers = [3,342,23,22,124];numbers.sort (function(b) {return b- a}); Alert (numbers[0]);
of course, the simplest way is:
// returns 433
You can also do this now:
// Take maximum value // take the minimum value
Event delegation
A simple example: the HTML code is as Follows:
<H2>Great Web Resources</H2><ulID= "resources"> <Li><ahref= "http://opera.com/wsc">Opera WEB Standards Curriculum</a></Li> <Li><ahref= "http://sitepoint.com">SitePoint</a></Li> <Li><ahref= "http://alistapart.com">A List Apart</a></Li> <Li><ahref= "http://yuiblog.com">YUI Blog</a></Li> <Li><ahref= "http://blameitonthevoices.com">Blame it on the voices</a></Li> <Li><ahref= "http://oddlyspecific.com">Oddly specific</a></Li></ul>
The JS code is as Follows:
//Classic Event Handling Example(function(){ varresources = document.getElementById (' Resources ')); varLinks = resources.getelementsbytagname (' a '); varall =links.length; for(vari=0;i<all;i++){ //Attach a listener to each linkLinks[i].addeventlistener (' Click ', handler,false); }; functionhandler (e) {varx = e.target;//Get The link that is clickedAlert (x); E.preventdefault (); };}) ();
With event delegation, You can write more gracefully:
(functionvar resources = document.getElementById (' resources '); Resources.addeventlistener (' click ', handler,falsefunction handler (e) { var/ get the link tha if(x.nodename.tolowercase () = = = ' A ') { alert (' Event delegation: ' + x '); E.preventdefault (); } };}) ();
Do you know which version of JavaScript your browser supports?
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];return true;}Catch(ex) {return false;}}) ())? 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 ("Latest Javascript version supported:" +js_ver.supports ()); Alert ("support for version 1.7:" + js_ver.supports ("1.7"));
Determine if a property exists
//Bad:this would cause an error in code if foo is undefinedif(foo) {dosomething ();}//good:this doesn ' t cause any errors. however, even when//Foo is set to NULL or false, the condition validates as trueif(typeofFoo! = "undefined") {dosomething ();}//better:this doesn ' t cause any errors and in addition//values NULL or false won ' t validate as Trueif(window.foo) {dosomething ();}
There are cases when we have deeper structures and need more appropriate checks:
// Ugly:we has to proof existence of every // object before we can be sure property actually exists if (window.ofoo && ofoo.obar && oFoo.oBar.baz) {dosomething ();}
In fact, the best way to detect whether a property exists is:
if inch Window) { Console.log ("OPERA");} Else { console.log ("not OPERA");}
Detects whether an object is an array
var obj=[];object.prototype.tostring.call (obj)= = "[Object Array]";
Passing objects to a function
functiondosomething () {//Leaves The function if nothing is passed if(!arguments[0]) {return false; }varOargs = Arguments[0] arg0= Oargs.arg0 | | "", Arg1= Oargs.arg1 | | "", Arg2= Oargs.arg2 | | 0, Arg3= Oargs.arg3 | |[], Arg4= Oargs.arg4 | |false;} DoSomething ({arg1:"foo", Arg2:5, Arg4:false});
Using labels in loops
Sometimes nested loops in loops, you may want to exit a layer of loops, before always using a flag variable to judge, now know there is a better way:
outerloop: for (var ii=0;ii<5;ii++ if Span style= "color: #000000;" > (somethingistrue ()) { // Breaks the Outer loop Iteration outerloop; } innerloop: for (var ia=0;ia< 5;ia++ if (somethingelseistrue ()) { // Breaks the inner loop iteration break innerloop; }}}
Reprint Address: https://my.oschina.net/os2015/blog/465376
Summary JavaScript Learning summary-tips, methods, details (rpm)