Javascript具有一种称为“自动分号插入”的功能,基本上,如果解析器遇到无效的令牌,而该令牌之前的最后一个令牌是换行符,则解析器将在换行符所在的位置插入分号。这样一来,您基本上可以编写所有不带分号的javascript代码,但是您必须了解一些边缘情况,主要是如果您有return关键字,然后要在新行中返回的值。
function test(){
// This will return 'undefined', because return is a valid statement
// and "john" is a valid statement on its own.
return
"john"
}
由于存在这些陷阱,因此有数十篇文章的标题为“自动分号插入是邪恶的”,“始终在Javascript中使用分号”等。
但是在Python中,没有人曾经使用过分号,并且它具有完全相同的陷阱。
def test():
# This will return 'undefined', because return is a valid statement
# and "john" is a valid statement on its own.
return
"john"
工作原理完全相同,但是没有人担心Python的行为。
我认为JavaScript行为不佳的情况很少,您应该可以轻松避免它们。在新行上返回+值?人们真的做了很多吗?
有什么意见吗?您在JavaScript中使用分号吗?为什么?
#
,不是`//'。