JavaScript中的逗号运算符

时间:2016-11-15 16:04:04

标签: javascript

关注this教程,这些行是什么意思?

Public Function DateTimeFromSCCM(ByVal ts As String) As DateTime
    Dim pos As Integer = ts.LastIndexOfAny({"+"c, "-"c})
    If pos < 0 Then Throw New ArgumentException("Timestamp must contain a timezone offset", "ts")

    Dim offset As Integer
    If Not Integer.TryParse(ts.Substring(pos + 1), offset) Then
        Throw New ArgumentException("Timezone offset is not numeric", "ts")
    End If

    Dim hours As Integer = offset \ 60
    Dim minutes As Integer = offset Mod 60

    Dim timestamp As String = ts.Substring(0, pos + 1) & hours.ToString & minutes.ToString("00")
    Dim result As DateTime
    If Not DateTime.TryParse(timestamp, result) Then
        Throw New ArgumentException("Invalid timestamp", "ts")
    End If
    Return result
End Function

逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。

这些线条怎么能更容易写出来?

2 个答案:

答案 0 :(得分:5)

在这种情况下,逗号分隔两个变量,就是它,它与写入相同

var join = require('path').join;
var pfx  = join(__dirname, '../_certs/pfx.p12');

相反,人们可以做

var join = require('path').join,
    pfx  = join(__dirname, '../_certs/pfx.p12');

在这种情况下,逗号只是一个分隔符,就像它是一个对象文字或数组一样。

逗号运算符,当它要作用于两个表达式时,它们只是一个运算符,一个在左侧,一个在右侧,当你想要包含多个表达式时,可以使用它需要单个表达式的位置。

一个例子是返回陈述

[1,2,3].reduce(function(a,b,i) {
    return a[i] = b, a; // returns a;
},[]);

等...

答案 1 :(得分:0)

在许多情况下,它基本上与分号相同,因此您可以将其重写为:

var join = require('path').join;
var pfx = join(__dirname, '../_certs/pfx.p12');

区别在于声明变量(如您的示例),其中var应用于逗号分隔列表中的每个元素。除此之外,它或多或少是一个分号,但在大多数情况下不建议使用逗号语法。

我个人更喜欢它用于变量,因为我认为这看起来更清洁:

var a = 5,
    b = 6,
    c, 
    d;

但其他人不喜欢它。