首页 > 编程语言 >JavaScript中的可选分号

JavaScript中的可选分号

时间:2023-08-19 09:23:09浏览次数:42  
标签:语句 return 代码 JavaScript let 换行符 选分

与许多编程语言一样,JavaScript使用分号(;)来分隔语句。这对于保持代码清晰非常重要:没有分号,一个语句的末尾可能会被解释为另一个语句的开头,反之亦然。在JavaScript中,如果两个语句写在不同的行上,通常可以省略它们之间的分号。此外,在程序的末尾,如果下一个标记是右花括号},您可以省略分号。许多JavaScript程序员使用分号来明确表示语句的结束,即使它们并不严格必要。另一种风格是尽量省略分号,只在必要的情况下使用它们。无论使用哪种风格,了解JavaScript中可选分号的一些细节很重要。

(程序员的软技能:ke.qq.com/course/6034346)

考虑以下代码。由于这两个语句位于不同的行上,第一个分号可以省略:

a = 3;
b = 4;

然而,像这样写需要分号:

a = 3; b = 4;

请注意,JavaScript并不将每个换行符都视为分号;只有在无法在不插入分号的情况下解析代码时,它才会这样做。更准确地说(除了后面讨论的三个例外情况),JavaScript仅在下一个非空格字符无法解释为当前语句的一部分时,将换行符视为分号。看一下这段代码:

let a
a
=
3
console.log(a)

上面的代码被解释为:

let a; a = 3; console.log(a);

第一个换行符被视为分号,是因为如果没有它,JavaScript无法解析代码let a a。第二个a被视为独立的语句,但JavaScript不会将第二个换行符视为分号,因为它可以继续解析更长的语句a = 3;

这些语句终止规则可能会导致意外情况。以下代码可能看起来是两个位于不同行上的语句:

let y = x + f
(a+b).toString()

然而,第二行的括号可以被解释为从第一行调用f(a+b)的函数调用。所以JavaScript将这些行解释为:

let y = x + f(a+b).toString();

这可能不是作者的意图。为确保代码被解释为两个独立的语句,必须在这里显式添加分号。

通常,如果语句以(、[、/、+或-开头,它可能被解释为前一个语句的延续。实际上,以/、+或-开头的语句非常少见,但以(和[开头的语句并不少见,尤其是在某些JavaScript编码风格中。一些程序员喜欢在所有这些语句之前防御性地添加分号。这样,即使修改了前面的语句并删除了末尾的分号,也不会影响当前语句:

// 此处省略分号
let x = 0
// 防御性:确保此语句是独立的
;[x,x+1,x+2].forEach(console.log)

JavaScript有三个例外,涉及到当无法将代码解释为连续语句时,它如何将换行符视为分号。第一个例外涉及return、throw、yield、break和continue语句。这些语句通常是独立的,但有时可以跟随标识符或表达式。如果其中任何一个单词后面跟着一个换行符(没有其他标记在中间),JavaScript将该换行符视为分号。例如,如果写入:

return
true;

JavaScript会假定您的意思是:

return; true;

但您的意图可能是:

return true;

这意味着您绝不能在关键字(如return、break或continue)和其后的表达式之间插入换行符。如果这样做,调试错误可能会变得具有挑战性,因为问题并不明显。

第二个例外涉及++和--运算符。这些运算符可以是前缀或后缀。如果要将它们用作后缀运算符,它们必须与应用它们的表达式在同一行上。第三个例外涉及使用简洁的“箭头”语法定义的函数:箭头=>必须与参数列表在同一行上。

(程序员的软技能:ke.qq.com/course/6034346)

标签:语句,return,代码,JavaScript,let,换行符,选分
From: https://www.cnblogs.com/web-666/p/17642061.html

相关文章

  • JavaScript中的析构对象,析构数组与展开运算符
    前言这些是JavaScript中重要的编程思想,这些析构对象,析构函数与展开运算符很重要这块内容不怎么难,纯属一些语法,但是在所谓的函数式编程,以及React中却是广泛使用的逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内容!!逆向思维,之前是怎么构造,而现在让你如何展开,获取里面的内......
  • JavaScript中常见的数据结构和算法及其应用场景简介
    在JavaScript编程中,数据结构和算法是必不可少的组成部分。本文将介绍JavaScript中常见的数据结构和算法以及它们的应用场景。数据结构数组数组是JavaScript中最常见的数据结构之一。它是一种有序的集合,可以存储任意类型的数据。由于数组支持快速随机访问,因此它非常适合用于存......
  • 《Javascript中关于this作用域的箭头函数,普通函数以及回调函数中的特殊作用》
    开言这篇文章的内容很简单,一句话就是“涉及this指向谁”!!!但是涉及JavaScript的普通函数,箭头函数,WIndow,回调,Object等各种知识点其糅杂在一起,其知识点会很混乱,我们要理性头绪!!简单来说,普通函数可以看做管理严格的孩子,箭头函数是一个自由自在的孩子因此,在object中,使用箭头函数很危......
  • 7 JavaScript循环语句
    7循环语句在js中有三种循环语句.首先是while循环.它的逻辑和咱们python中的while几乎一模一样,就是符号上有些许的区别.//语法while(条件){循环体->里面可以有break和continue等关键字}/*判断`条件`是否为真,如果`真`,则执行`循环体`.执行完`循环体`,会再次......
  • 6 JavaScript条件判断
    6条件判断除了HTML以外.几乎所有的编程语言都有条件判断的功能.比如,python,我们用if语句来做条件判断.到了javascript中也是一样的,也使用javascript来做条件上的判断./*语法1*/if(条件1){代码块1}if(条件)a,b,c,d;该语法表示当条件为真.运......
  • [转]如何在 JavaScript 中遍历对象
    原文地址:如何在JavaScript中遍历对象在JavaScript中,当你听到“循环”一词时,你可能会想到使用各种循环方法,例如 for 循环、forEach() 方法、map() 方法等等。但不幸的是,这些方法对于对象不起作用,因为对象是不可迭代的。这并不意味着我们不能循环遍历一个对象——只是我......
  • 2 JavaScript的基础类型
    2JavaScript的基础类型JS虽然是一个脚本语言.麻雀虽小,五脏俱全.在js中也是可以像其他编程语言一样.声明变量,条件判断,流程控制等等.我们先看一下JS中的数据类型在js中主要有这么几种数据类型(基本)number数字,不论是整数还是小数,数据类型都是numberstring字......
  • QtWebChannel和JavaScript进行通信(简单理解)
    说明在使用Qt(C++)和JavaScript之间实现通信时,通常会使用一些模块和技术来使两者能够交互和传递数据。这种通信通常用于在Qt应用程序中嵌入Web内容,或者在Web页面中嵌入Qt应用程序。以下是一些常用的模块和技术,以及它们的作用QtWebEngine模块:作用:QtWebEngine是Qt中的Web引擎,允......
  • JavaScript-数据类型
    JavaScript语言的每一个值,都属于某一种数据类型。JavaScript的数据类型,共有六种。(ES6又新增了Symbol和BigInt数据类型,本教程不涉及。)数值(number):整数和小数(比如1和3.14)。字符串(string):文本(比如HelloWorld)。布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)。undefined:表......
  • javascript学习笔记day3
    今天没做啥笔记都是些学了的基础知识,学的都是像while,switch这些基础的语法,下面带是笔记++i前置运算和i++后置运算的区别:前置运行先相加再计算,后端运算先计算完再++。比较符也有隐式转换brank退出循环continue退出本次循环继续下次循环 顺便把while的循环作业一起放上来了,这个......