体面编码之JavaScript

解道jdon 2021-05-03 23:28:51
java javascript 编码 解道jdon 体面


避免依赖null和之间的区别undefined。这样做往往会导致代码脆弱。在对它们中的任何一个进行相等性检查时使用非强制相等(==)null。避免使用两者来表示不同类型的“无值”情况,例如“unknown field”与“no value for today”。

谨防用真假检查零。如果存在数字,则通常需要以与任何其他数字相同的方式对待 - 与其他假值不同。

浮点运算,有其常见的陷阱。考虑在客户端尽可能少地做和/或使用JavaScript数字库

注意不同浏览器中的功能支持。要么仅使用应用程序支持的所有浏览器支持的那些,要么执行渐进增强。请参阅我可以使用[url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#Browser_compatibility]MDN文档页面[/url]上的参考,浏览器兼容性表和ECMAScript兼容性表。使用linter插件自动执行兼容性检查。某些功能可能会由您的构建设置进行转换,或者是polyfilled - 使它们可以在旧版浏览器中使用。

避免setTimeout()或类似脆弱或不明白的方式。通过在经过仔细选择(通常通过反复试验)时间延迟之后运行一段代码,可能会出现可能很难实现/修复的方案。这种方法起作用的原因(至少在某些时候)很少为作者所知,并导致脆弱和不可预测的行为 - 特别是当延迟非零时。

注意在可能不期望的情况下变异的实例方法。这些包括Array的就地reverse(),以及许多Moment.js方法(认真考虑替代方法,如date-fns或Luxon)。

Array sort()将元素转换为字符串,并默认按字母顺序对它们进行排序。对于除字符串以外的任何东西,这不太可能是想要的 - 必须给出比较器功能。

字符串replace()仅在使用字符串作为模式时替换第一个匹配项。全局替换需要使用正则表达式。

尽可能避免duck类型检查。如果对duck进行改变,它们很容易破碎,并且不能很好地传达意图。

避免通过交叉读取和写入导致布局颠簸。组读取和写入尽可能导致布局/重排的属性

避免过度工作以响应用户输入。这包括计算,屏幕更新和对服务器的请求。考虑去抖动或限制键盘输入和某些类型的鼠标事件。

避免使用过时的技术。语言的进步继续为许多传统技术带来更新,更好的替代方案。使用它们。示例包括async / await和模板字符串。

 

版权声明
本文为[解道jdon]所创,转载请带上原文链接,感谢
https://www.jdon.com/51270

  1. 21. Object oriented foundation "problems and solutions of object traversal"
  2. Discussion on hot micro front end: Google AdWords is a real micro front end
  3. Usecallback and usememo for real performance optimization
  4. 【前端圭臬】十一:从规范看 JavaScript 执行上下文(下)
  5. [front end standard] 11: Javascript execution context from the perspective of specification (2)
  6. Hexagonal六角形架构ReactJS的实现方式 - Janos Pasztor
  7. Transaction of spring's reactive / imperative relational database
  8. The implementation of hexagonal hexagonal reactjs Janos pasztor
  9. HTTP状态码:402 Payment Required需要付款 - mozilla
  10. HTTP status code: 402 payment required - Mozilla
  11. Factory mode, constructor mode and prototype mode
  12. Build the scaffold of react project from scratch (Series 1: encapsulating a request method with cache function based on Axios)
  13. Cocos Quick Start Guide
  14. Comparison of three default configurations of webpack5 modes
  15. A case study of the combination of flutter WebView and Vue
  16. CSS: BFC and IFC
  17. A common error report and solution in Vue combat
  18. JS: this point
  19. JS: prototype chain
  20. JavaScript series -- promise, generator, async and await
  21. JS: event flow
  22. Front end performance optimization: rearrangement and redrawing
  23. JS - deep and shallow copy
  24. JavaScript异步编程3——Promise的链式使用
  25. JavaScript asynchronous programming 3 -- chain use of promise
  26. Vue.js组件的使用
  27. The use of vue.js component
  28. How to judge whether a linked list has links
  29. Element UI custom theme configuration
  30. Text image parallax effect HTML + CSS + JS
  31. Spring的nohttp宣言:消灭http://
  32. Vue3 intermediate guide - composition API
  33. Analysis of URL
  34. These 10 widgets that every developer must know
  35. Spring's nohttp Manifesto: eliminate http://
  36. Learn more about JS prototypes
  37. Refer to await to JS to write an await error handling
  38. A short article will directly let you understand what the event loop mechanism is
  39. Vue3 uses mitt for component communication
  40. Characteristics and thinking of ES6 symbol
  41. Two way linked list: I'm no longer one-way driving
  42. Vue event and form processing
  43. Reactive TraderCloud实时外汇开源交易平台
  44. Reactive tradercloud real time foreign exchange open source trading platform
  45. Node.js REST API的10个最佳实践
  46. Ten best practices of node.js rest API
  47. Fiddler advanced usage
  48. Process from Vue template to render
  49. Promise up (asynchronous or synchronous)
  50. Principle and implementation of promise
  51. Vs code plug in sharing - run code
  52. Vue practical notes (1) introduction of Ant Design
  53. Vue actual combat notes (2) introduction of element plus
  54. Introduction to webpack
  55. Webpack construction process
  56. Vue notes
  57. The experience and lessons of moving from ruby megalith architecture to go microservice
  58. Using leancloud to add artitalk module to hexo blog
  59. Implementation of chrome request filtering extension
  60. Detailed introduction of beer import declaration elements and label quarantine [import knowledge]