8

我一直在研究 ES6,假设切换到 EcmaScript 2017 会很容易。

在经历的过程中,我对这段代码感到困惑

function f (x, y = 7, z = 42) {
    return x + y + z
}
f(1) === 50

哪个具有 ES5 等效项

function f (x, y, z) {
    if (y === undefined)
        y = 7;
    if (z === undefined)
        z = 42;
    return x + y + z;
};
f(1) === 50;

我确实从中了解了默认参数。

但是这f(1)===50两个代码的含义是什么?它有什么用?

这是另一个例子

function f (x, y, ...a) {
    return (x + y) * a.length
}
f(1, 2, "hello", true, 7) === 9

是什么f(1, 2, "hello", true, 7) === 9意思?

我了解,===为了比较运算符的 LHS 和 RHS,包括两者的类型,而不仅仅是值。

但是为什么它被这样使用?

请解释一下它的用法。

这是我得到这个的链接。http://es6-features.org/#RestParameter

4

5 回答 5

3

这是一个严格的比较测试f(x,y,z),在使用 x 参数值 1 调用时 function 是否返回值 50。当添加到 value 的默认参数值x是 7 和 42 时,这将是正确的。

这些函数调用和比较纯粹是为它们调用的函数提供使用示例和可能的测试示例。

编码

function f (x, y, ...a) {
    return (x + y) * a.length
}
f(1, 2, "hello", true, 7) === 9

是扩展参数处理的一个例子。...a变量长度属性等于 3,因此测试确认在 和 之后传递给函数的参数x数量y

于 2016-12-30T09:01:45.573 回答
2

f(1)===50检查是否f(1)等于 50。如果此表达式的计算结果true,为 ,则此表达式的结果为true。否则就是false。由于您没有将此值分配给变量,因此您不能在任何地方使用它。

形式上,===称为严格相等运算符。欲了解更多信息,请查看此处

于 2016-12-30T08:59:55.627 回答
2

这里的重点是它的示例代码。他们向您展示了使用这些参数调用该函数的结果等于某个值。表达式本身不会做任何事情,除非您将其粘贴到控制台中。

他们可以很容易地使用评论。

f(1, 2, "hello", true, 7) // 9
于 2016-12-30T09:03:30.163 回答
2

据我说,你几乎以正确的方式接受了它。

只需将该函数调用与三等号if条件一起放入即可。

if ( f(1) === 50 ){
    console.log(true);
}
else {
    console.log(false);
}

就是这样。

三元组等于只是一个比较运算符。三元组等于运算符一侧的函数调用表示从该函数返回的值。

因此,只需将其视为comparison operatorjavascript 中的任何其他内容。

如果我误解了您的问题,请纠正我。!

祝一切顺利!

于 2016-12-31T09:01:36.310 回答
1

标识 ( === ) 运算符的行为与相等 ( == ) 运算符相同,只是不进行类型转换,并且类型必须相同才能被视为相等

在您的示例中,如果您将输入所有三个数字类型的参数,您将得到数字作为结果,然后检查结果是否具有正确的类型,您必须使用===运算符。

也许这个例子在你的情况下会更清楚:

f(1,1,1)   // returns 3 - numeric type
f(1,1,"1") // returns "111" - string type
//so now if you will write
f(1,1,1) == "3" // true
f(1,1,1) == 3 // true
f(1,1,1) === "3" // false, because the result is 3 not "3" as string.
f(1,1,1) === 3 // true
f(1,1,"1") == "111" // true
f(1,1,"1") == 111 // true
f(1,1,"1") === "111" // true
f(1,1,"1") === 111 // false, because the result is string "111" not 111 number.

因此,在您的情况下,此===运算符用于仔细检查结果是否真的是您所期望的。

于 2016-12-30T09:15:26.530 回答