won*_*ng2 57 javascript python syntax
Python和JavaScript都允许开发人员使用或省略分号.但是,我经常看到它建议(在书籍和博客中)我不应该在Python中使用分号,而我应该总是在JavaScript中使用它们.
语言如何使用分号或者这只是文化差异是否存在技术差异?
Nul*_*ion 68
Python中的分号是完全可选的(当然,除非你想在一行中有多个语句).我个人认为每个语句末尾带有分号的Python代码看起来非常难看.
现在在Javascript中,如果你不写分号,一个是自动插入1在行的末尾.这可能会导致问题.考虑:
function add(a, b) {
return
a + b
}
Run Code Online (Sandbox Code Playgroud)
你会认为这会返回a + b,但是Javascript只是超越了你,并将其视为:
function add() {
return;
a + b;
}
Run Code Online (Sandbox Code Playgroud)
undefined而是回来了.
1有关详细信息和注意事项,请参阅第27页,第7.9项 - ECMAScript语言规范中的自动分号插入.
小智 63
这让我困惑的时间最长.我认为这只是一种文化差异,并且每个人抱怨分号插入是语言中最糟糕的特征是一个白痴.来自NullUserException的答案的经常重复的例子并没有影响我,因为在这种情况下,无论缩进,Python的行为与JavaScript相同.
然后有一天,我写了一些模糊的东西:
alert(2)
(x = $("#foo")).detach()
Run Code Online (Sandbox Code Playgroud)
我希望它被解释为:
alert(2);
(x = $("#foo")).detach();
Run Code Online (Sandbox Code Playgroud)
它实际上是这样解释的:
alert(2)(x = $("#foo")).detach();
Run Code Online (Sandbox Code Playgroud)
我现在用分号.
JavaScript的将只有1把换行符因为在这些情况分号:
throwor return关键字和表达式之间.continueor break关键字和标识符之间.++或--运算符之间.这会留下这样的情况,其行为不是您所期望的.有些人2采用的惯例只在必要时才使用分号.我更喜欢遵循始终使用它们的标准惯例,现在我知道它并非毫无意义.
1我省略了一些细节,请参阅ECMA-262 5e第7.9节的确切描述.
2 Twitter Bootstrap是一个备受瞩目的例子.
除了句法问题,它部分是文化的.在Python文化中,任何无关的角色都是诅咒,而那些不是白色空间或字母数字的角色则是双重的.
因此,不喜欢领先的美元符号,分号和花括号等内容.你在代码中所做的事情取决于你,但要真正理解一种语言,仅仅学习语法是不够的.
小智 6
JavaScript被设计为"看起来像C",因此分号是文化的一部分.Python语法的不同之处在于,如果分号"缺失",程序员就不会觉得不舒服.
为什么在 Python 代码中看不到它们的答案是:没有人需要它们,没有它们代码看起来更干净。
一般来说,分号只是一种传统。许多新语言刚刚彻底放弃了它们(以 Python、Ruby、Scala、Go、Groovy、Io 为例)。程序员不需要它们,编译器也不需要。如果一种语言不允许您输入一个您从来不需要的额外字符,您会想要利用它,不是吗?
只是 JavaScript 尝试删除它们并不是很成功,许多人更喜欢约定俗成的总是使用它们,因为这样可以减少代码的歧义。
主要是因为 Python 看起来一点也不像 Java,而 JavaScript 却很像,这导致人们这样对待它。在 JavaScript 中使用分号不会遇到麻烦是非常简单的(JavaScript 中的分号是可选的),其他任何东西都是FUD。
| 归档时间: |
|
| 查看次数: |
6455 次 |
| 最近记录: |