JavaScript 初学者最佳实践

2025-06-07

JavaScript 初学者最佳实践

让我们快速讨论一下使用 JavaScript 时可以遵循的一些最佳实践。我已经介绍了一些我们在日常编程中经常用到的基本知识。

让我们开始吧。

始终使用 let 或 const 定义变量

通过使用let或定义变量const,我们可以避免诸如

  • 全局变量和命名空间的污染:假设你的应用程序使用了一个全局变量title。在代码的其他部分,你又定义了一个变量title(没有使用letconst),但这个变量是特定于该函数的,与全局变量没有任何关联title。那么这个变量就有可能title改变(改变)全局变量的值。

全局变量的污染

  • let如果我们使用或定义变量const,则该变量将处于块作用域,这意味着它仅在该代码块中可用。因此,它将无法更改全局变量。

全局变量污染的修复

  • 暴露敏感数据:假设您将 API 密钥存储在全局变量中(您在没有let或的情况下定义const),那么此 API 密钥将存储在全局对象(window)中,并且任何访问您网站的人都可以轻松访问。

可以从全局对象(窗口)访问敏感数据

  • let同样,如果我们使用或定义变量const,则变量将被阻止作用域,并且不会暴露给全局对象(window)。

始终正确定义条件

  • 如果您想检查变量是否存在虚假值(undefined,,null空字符串),只需使用 NOT 运算符(!),而不必检查每个虚假值。

检查虚假值

  • 如果你想检查某个键/值是否存在于某个对象中。你可以使用 AND 运算符 ( ) 安全地逐个检查该键/值是否存在&&

检查对象键/值是否存在

  • 您还可以使用可选链来检查对象中是否存在键/值。

可选链式调用

分号

在深入探讨之前,我们先来做个小练习​​。你能猜出下面这个函数的输出是什么吗?

控制台的输出是什么?

答案:输出将是undefined😲。但是怎么做呢?这是因为 JavaScript 引擎在解析代码时会自动插入分号。如果代码格式不正确(如上例所示),JavaScript 引擎会;在 return 语句 ( ) 的末尾添加一个分号 ( ) return;,并且认为没有返回值。因此返回的值是undefined

自动分号插入 (ASI):JavaScript 引擎在解析代码时会自动在每个标记的末尾插入一个分号。这有时可能会导致代码出现意外行为。您可以在此处阅读更多相关信息。

自动插入分号

还建议在代码的每个语句末尾添加分号,以避免出现 ASI 问题。

括号

不同编程语言背景的人倾向于将括号放在下一行。但在 JavaScript 中,这可能会导致代码出现意外行为。

  • {}切勿在下一行开始使用花括号 ( )。由于 ASI,你的代码可能会出现异常行为。

糟糕的括号

  • 始终在语句结束后(在同一行)开始使用花括号。

良好的支架

我们可以通过使用Prettier或任何其他格式化工具/库来格式化代码来避免这些问题。

模板字符串

模板字面量用于定义字符串值。模板字面量用反引号括起来,动态值/占位符可以使用美元符号传递${dynamicValue}

模板字面量示例

以下是模板文字的一些用例。

  • 模板文字可用于定义动态 HTML 内容。

使用模板文字定义动态 HTML 内容

  • 模板文字可用于定义数据库查询

使用模板文字定义数据库查询

  • 模板文字可用于定义动态短 URL(单行)。

使用模板字面量定义短 URL

  • 不要使用模板字面量来定义多行的长 URL。因为 API 不支持多行 URL。有很多方法可以在一行中处理多个参数,但我们不会在这里一一讨论。

避免对长多行 URL 使用模板字面量

通过使用 linters 和代码格式化程序,我们可以避免本文讨论的大多数问题。以下是一些常用的 linters 和代码格式化程序。linters
ESLintJSLint
代码格式化程序Prettier

今天就到这里。希望你喜欢。😉

您还可以查看我关于在 JavaScript 中命名变量和函数的文章。

感谢您的光临。如果您喜欢这些内容,请支持我并关注我,以便获取更多类似内容。

通过LinkedInTwitterGitHub与我联系

文章来源:https://dev.to/syedafrozpasha/javascript-best-practices-for-beginners-11ec
PREV
如何减少代码中未使用的 JavaScript?
NEXT
React 无限滚动教程:使用和不使用库