当前位置: 首页 > 后端技术 > Node.js

你可能不知道的JavaScript代码片段和技巧(下)

时间:2023-04-03 19:41:54 Node.js

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=50):类别=“旧”;休息;案例(年龄<=20):Category="Baby";休息;默认值:类别=“年轻”;休息;};//欢迎加入前端全栈开发交流圈一起学习交流:1007317281返回分类;}getCategory(5);//将返回“Baby”38.使用该对象作为对象参数的原型,以该原型创建一个新对象:functionclone(object){functionOneShotConstructor(){};OneShotConstructor.prototype=对象;返回新的OneShotConstructor();}clone(Array).prototype;//[]39,HTML字段转换函数functionescapeHTML(text){varreplacements={"<":"<",">":">","&":"&",""":"""};returntext.replace(/[<>&"]/g,function(character){returnreplacements[character];});}40.不要在loopfinally中的catch部分会在执行过程中将异常赋值给一个变量,这个变量会在运行时作用域中被构造为一个新的变量不要:varobject=['foo','bar'],i;for(i=0,len=object.length;i