• 技术文章 >web前端 >js教程

    JS 代码要不要加分号?

    GuanhuiGuanhui2020-06-03 09:20:18转载1417

    大前端成长进阶课程:进入学习

    JavaScript 中分号划分了社区。有些人无论如何都喜欢使用分号。其他人喜欢不加分号。

    在使用分号多年之后,2017 年秋,我决定尝试根据需要不加分号,并且设置 Prettier 自动移除我代码中的分号,除非是必要的代码结构需要它们。

    现在我发现,不使用分号非常自然,我认为这样的代码看起来更好,它们更简洁易读。

    这完全可能的,因为 JavaScript 并不严格要求分号。当某个地方需要分号时,它会在后台添加它。

    这个过程就叫做 自动插入分号.

    重要的是了解使用分号的规则,这样可以避免编写会产生 bug 的代码,因为它们的行为与您期望的不同。

    JavaScript 自动添加分号的规则

    JavaScript 解释器在解释源码时发现以下特殊情况,会自动添加分号:

    与你的想法不同的代码示例

    于这些规则,这里有一些例子。

    看例子:

    const hey = 'hey'
    const you = 'hey'
    const heyYou = hey + ' ' + you
    ['h', 'e', 'y'].forEach((letter) => console.log(letter))

    你会得到错误 Uncaught TypeError: Cannot read property 'forEach' of undefined,因为基于规则 1,JavaScript 会尝试将代码解释为

    const hey = 'hey';
    const you = 'hey';
    const heyYou = hey + ' ' + you['h', 'e', 'y'].forEach((letter) => console.log(letter))

    这段代码:

    (1 + 2).toString()

    打印为 "3".

    const a = 1
    const b = 2
    const c = a + b
    (a + b).toString()

    而是引发 TypeError: b is not a function 异常,因为 JavaScript 尝试将其解释为

    const a = 1
    const b = 2
    const c = a + b(a + b).toString()

    另一个基于规则 4 的例子:

    (() => {
      return
      {
        color: 'white'
      }
    })()

    你希望此立即调用的函数的返回值是一个包含 color 属性的对象,但事实并非如此。相反,它是 undefined,因为 JavaScript 在 return 之后插入分号。

    相反,你应该将左括号放到 return 后面:

    (() => {
      return {
        color: 'white'
      }
    })()

    你认为这段代码会展示 '0':

    1 + 1
    -1 + 1 === 0 ? alert(0) : alert(2)

    相反它会展示 2,因为 JavaScript 根据规则 1 会解释为:

    1 + 1 -1 + 1 === 0 ? alert(0) : alert(2)

    结束语

    当心。有些人对分号很有意见。我倒不是很在意,这个工具提供给我们一个不使用它的选择,所以我们可以避免使用分号。

    我不是在建议什么,只是让你自己做决定。

    我们只需要注意一点,即使大多数情况下这些基本场景从未出现在您的代码中。

    摘选一些规则,如下:

    最后,始终测试您的代码,以确保它能满足您的需要。

    推荐教程:《JS教程

    以上就是JS 代码要不要加分号?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:js
    上一篇:JS 中排名前十的报错如何避免 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• js去除数组中的重复值• PHP如何将JSON转换成数组/对象• 简单实用的进度条加载组件loader.js• JS 中排名前十的报错如何避免• PHP数组转JSON字符串
    1/1

    PHP中文网