使用逗号分隔代码而不是移动到下一行的目的是什么?
例如,我找到了这段代码:
var fm = $.NSFileManager.defaultManager,
oURL = $.NSURL.fileURLWithPathIsDirectory(strPath, true),
lstFiles = ObjC.unwrap(
fm.contentsOfDirectoryAtURLIncludingPropertiesForKeysOptionsError(
oURL, [], 1 << 2, null
)
),
lstHarvest = [];
我经常看不到它,但感觉就像是在判刑。
更新:
我想我知道发生了什么,但我很少见到这一点。是ES5,ES6的事吗?
答案 0 :(得分:4)
这是var
的语法:
var varname1 [= value1] [,varname2 [= value2] ... [,varnameN [= valueN]]];
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var
请注意,初始化(=
)的存在无关紧要。
以避免重复var
。比较:
var a, b, c, d, e
或
var a,
b,
c,
d,
e
与
var a
var b
var c
var d
var e
有时是风格和偏好的问题
在某些地方你必须使用这种语法来声明几个变量,因为你不能使用多行,(例如在for循环标题中:for (var a = 0, b = 3; ... ; ...)
)
请注意,不与新行相同! (首先不是var
变量声明的其他行,请参阅What is the purpose of the var keyword and when to use it (or omit it)?了解差异。)
但是,您的示例在末尾和与var
之间没有逗号的情况相同。
是ES5,ES6吗?
这是ECMAScript第1版(1997年)以来的语法
(pdf文件第63/110页,第12.2节,变量陈述)
答案 1 :(得分:2)
只有一个var
用于初始化多个变量。你也可以这样做(我认为这更好,更可读):
var fm = $.NSFileManager.defaultManager;
var oURL = $.NSURL.fileURLWithPathIsDirectory(strPath, true);
var lstFiles = ObjC.unwrap(
fm.contentsOfDirectoryAtURLIncludingPropertiesForKeysOptionsError(
oURL, [], 1 << 2, null));
var lstHarvest = [];
答案 2 :(得分:2)
像大多数其他语言一样,如c,c ++ 我们可以宣布
public function addComment(Request $request, $id)
{
$film = Film::find($id);
$film->comments()->save(['body'=>$request->body]);
}
像这样的javascript也允许我们这样做。简单:)
答案 3 :(得分:1)
使用逗号允许程序员在每个声明/定义的开头省略fmap id (x :: f a) = x
(fmap g . fmap h) = fmap (g . h)
。您可以根据自己喜欢的风格来决定使用哪种形式,但要保持一致。