JavaScript是世界领先的编程语言,可用于Web开发、移动应用程序开发(PhoneGap、Appcelerator)、服务器端开发(Node.js和Wakanda),etc.)等等JavaScript仍然是很多新手进入编程世界的第一门语言。可以用来在浏览器中显示一个简单的提示框,也可以通过nodebot或nodruino来控制机器人。那些能够编写出结构清晰、性能卓越的JavaScript代码的开发者,已经成为当今就业市场最抢手的人才。在这篇文章中,我将分享一些JavaScript技巧、秘诀和最佳实践,除了少数,无论是浏览器的JavaScript引擎,还是服务器端的JavaScript解释器都适用。23.使map()函数方法循环遍历数据varsquares=[1,2,3,4].map(function(val){returnval*val;});//squares将等于[1,4,9,16]24.保留指定的小数位数varnum=2.443242342;num=num.toFixed(4);//num将等于2.4432注意,toFixec()返回25.浮点计算的问题0.1+0.2===0.3//是false9007199254740992+1//等于90071992547409929007199254740992+2//等于90071992547+40994为什么是0。因为0。等于0.30000000000000004。JavaScript数字根据IEEE754标准构造,并在内部表示为64位浮点小数。这个问题可以通过使用toFixed()和toPrecision()来解决。26、通过for-in循环检查对象的属性下面的用法可以防止迭代进入对象的prototype属性。for(varnameinobject){if(object.hasOwnProperty(name)){//dosomethingwithname}}//欢迎加入前端全栈开发交流圈一起学习交流:100731728127,逗号运算符vara=0;varb=(a++,99);console.log(a);//a将等于1console.log(b);//b等于9928,jQuery选择中用于计算和查询的变量暂存容器中,可以暂存整个DOM元素。varnavright=document.querySelector('#right');varnavleft=document.querySelector('#left');varnavup=document.querySelector('#up');varnavdown=document.querySelector('#down');29.提前检查传入isFinite()的参数isFinite(0/0);//falseisFinite("foo");//falseisFinite("10");//trueisFinite(10);//trueisFinite(undefined);//falseisFinite();//falseisFinite(null);//真的!!!这点要特别注意30.避免在数组中使用负数作为索引varnumbersArray=[1,2,3,4,5];varfrom=numbersArray.indexOf("foo");//from等于-1numbersArray.splice(from,2);//将返回[5]请注意,传递给splice的索引参数不应为负数,当它为负数时,它会从数组末尾移除元素。31、使用JSON序列化和反序列化varperson={name:'Saad',age:26,department:{ID:15,name:"R&D"}};varstringFromPerson=JSON.stringify(person);/*stringFromPerson等于"{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}"*/varpersonFromString=JSON.解析(stringFromPerson);/*personFromString等于person对象*/32、不要使用eval()或函数构造器eval()和函数构造器(Functionconstructor)的开销很大,JavaScript引擎必须将源代码转换成可执行代码。varfunc1=newFunction(函数代码);varfunc2=eval(函数代码);33.避免使用with()使用with()可以将变量添加到全局作用域中。因此,如果有其他同名变量,很容易混淆,次要值也会被覆盖。34.不要在数组上使用for-in以避免:varsum=0;for(variinarrayNumbers){sum+=arrayNumbers[i];}//欢迎加入前端全栈开发交流圈一起学习交流:1007317281更好什么是:varsum=0;for(vari=0,len=arrayNumbers.length;i
