当前位置: 首页 > 科技观察

JavaScript初学者应该知道的23个最佳实践

时间:2023-03-13 02:08:39 科技观察

JavaScript使用两个相等运算符:===|!==和==|!=。人们普遍认为进行比较的最佳做法是使用前一组运算符。“如果两个操作数具有相同的类型和值,则===比较为真,而!==比较为假。”—JavaScript:TheGoodParts然而,如果你使用==和!=,当比较不同类型的操作数时,你会遇到问题。在这种情况下,这组运算符将尝试对操作数的值进行无用的强制转换。Eval是坏的同义词对于那些不熟悉JavaScript的人来说,函数“evel”让我们可以访问JavaScript编译器。我们可以通过将字符串参数传递给“eval”来获取字符串执行的结果。这不仅会大大降低脚本的性能,还会带来巨大的安全风险,因为它赋予传递的纯文本过多的权力。尽可能避免使用eval函数。不要偷懒从技术上讲,您确实可以省略大多数花括号和分号。大多数浏览器都可以正确解释以下代码片段:if(someVariableExists)x=false但是,再考虑一下这段代码:if(someVariableExists)x=falseanotherFunctionCall();有些人可能认为前面的代码等同于:if(someVariableExists){x=false;anotherFunctionCall();}不幸的是,他错了。其实它的原意是:if(someVariableExists)x=false;anotherFunctionCall();您还应该注意到代码中的缩进模仿了花括号的功能。不用说,这是一种可怕的做法,应该不惜一切代价避免。唯一一次可以省略大括号的是在单行语句中,但即使这样也很有争议。if(2+2===4)返回“干得漂亮”;总是想着未来。如果在将来的某个时候,您需要向此if语句添加更多命令怎么办?没办法,只能重写这段代码。处理这个问题的底线是要谨慎对待省略号。使用JSLintJSLint是由DouglasCrockford编写的调试器。只需将您的脚本复制进去,它就会快速扫描您的代码以查找任何明显的问题和错误。“JSLint获取JavaScript源代码的副本并扫描代码。如果发现问题,它会返回一条消息,描述问题及其在源代码中的大致位置。问题通常是语法错误,但并非总是如此。JSLint还看了一些风格习惯和结构问题,并不能证明你的代码是正确的,只是提供了另一双眼睛,帮助发现问题。-JSLint文档犯一些愚蠢的错误。将脚本放置在页面底部的技巧在本系列之前的文章中也有推荐。由于它在这里也非常合适(尽管它非常合适),所以我将这些信息直接粘贴到此处。请记住——此最佳实践的主要目标是为用户尽快加载页面。加载脚本时,浏览器无法继续,直到加载了整个脚本文件。因此,用户必须等待更长的时间才能注意到任何进展。如果JS文件的目的只是为了添加功能——例如,在单击按钮之后——那么将这些文件放在底部,在结束body标记之前。这绝对是最佳实践。更好的做法

Andnowyouknowmyfavoritekindsofcorn。

在For语句之外声明变量当执行冗长的“for”语句时,让解释器引擎做必须做的事情。示例:错误做法for(vari=0;i
  • '+arr.join('
  • ')+'
  • ';“我不会让你厌烦基准测试;你只需要相信我(或自己测试一下)——这是迄今为止最快的方法!”使用本机方法(例如join()),无论抽象级别后面发生什么,通常都会比任何非本机方法快得多。—JamesPadolsey,james.padolsey.com“减少全局变量”通过将全局事物封装到单个命名空间中,您可以大大减少混淆与其他应用程序、组件和代码库交互的机会。"-DouglasCrockfordvarname='jeffrey';varlastname='Way';functiondoSomething(){...}console.log(name);//Jeffrey--orwindow.name更好的做法varDudeNameSpace={name:'Jeffrey',lastname:'Way',doSometing:function(){...}}console.log(DudeNameSpace.name);//Jeffrey注意到我们如何将全局“足迹”缩减为一个可笑地命名为“DudeNameSpace”的对象。评论你的代码一开始可能看起来没有必要,但相信我,你会想要尽可能地注释你的代码。几个月后当你回到这个项目时会发生什么?发现你不能轻易记住你的考虑每一行代码。或者,如果您的一位同事需要修改您的代码怎么办?永远,永远记得对代码的重要部分进行注释。//Cyclethrougharrayandechoouteachnamefor(vari=0,len=array.length;i0;x--){}console.timeEnd("MyTimer");}阅读,阅读,阅读我是网络开发者博客的粉丝(就像这个!),但博客真的不能代替午餐或睡前的书籍。永远在你的床头柜上放一本文发展的书。下面是一些我最喜欢的JavaScript书籍。面向对象的JavaScript;JavaScript:语言的本质;学习jQuery1.3;学习JavaScript并阅读它数次。我还在读书!自执行函数(Self-ExecutingFunctions)与调用函数相比,让函数在页面加载或调用父函数时自动执行更容易。只需将您的函数括在括号中,并添加一对额外的括号,这实际上就是调用该函数。(functiondoSomething(){return{name:'jeff',lastName:'way'};})();Raw(原始)JavaScript代码总是比使用代码库执行得更快JavaScript代码库,例如jQuery和Mootools,可以为你节省一个大量的编码时间——尤其是AJAX操作。话虽如此,请始终记住,代码库的执行速度永远不会与原始JavaScript代码一样快(假设代码正确)。jQuery的“each”方法非常适合迭代,但使用本机“for”语句总是更快。Crockford的JSON.Parse虽然JavaScript2应该有一个内置的JSON解析器,但在撰写本文时,我们仍然需要自己实现它。JSON的创建者DouglasCrockford已经实现了一个解析器供您使用。它可以从这里下载。只需导入此脚本,您将获得一个新的JSON全局对象来解析您的.json文件。varresponse=JSON.parse(xhr.responseText);varcontainer=document.getElementById('container');for(vari=0,len=response.length;i'+response[i].name+':'+response[i].email+'';}删除“语言”几年前,在脚本标签中有一个“语言”属性是很常见的。然而,这个属性早已被弃用,所以不要再使用它了。就这样吧,同志们。现在你知道了每个JavaScript初学者都应该知道的23个基本技巧。谢谢阅读。