=== 与函数调用的含义
Meaning of === with function call
我一直在研究 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,包括两者的类型而不仅仅是值。
可是为什么会被这么用呢??
请解释一下它的用法。
这是 link 我从哪里得到的。 http://es6-features.org/#RestParameter
f(1)===50
检查 f(1)
是否等于 50。如果此表达式的计算结果为 true,
,则此表达式的结果为 true
。否则就是false
。因为你没有把这个值赋给一个变量,所以你不能在任何地方使用它。
形式上,===
称为严格相等运算符。欲了解更多信息,请查看 here.
这是一个严格的比较测试函数 f(x,y,z)
是否在使用 x 参数值为 1 returns 时调用值 50。当默认参数值添加到值时,这将是正确的x
是 7 和 42。
这些函数的调用和对比,纯粹是为它们所调用的函数提供使用示例和可能的测试示例。
代码
function f (x, y, ...a) {
return (x + y) * a.length
}
f(1, 2, "hello", true, 7) === 9
是扩展参数处理的一个例子。 ...a
变量长度 属性 等于 3 因此测试确认在 x
和 y
.
之后传递给函数的参数数量
这里的重点是它的示例代码。他们向您展示了使用这些参数调用时函数的结果等于某物。表达式本身不会执行任何操作,除非您将其粘贴到控制台中。
他们可以很容易地使用评论。
f(1, 2, "hello", true, 7) // 9
identity (===) 运算符的行为与 equality (==) 运算符的行为相同,只是没有进行类型转换, 类型必须相同才能被视为相等。
在您的示例中,如果您将所有三个数字类型的参数都放入,您将得到数字作为结果,然后检查结果是否具有正确的类型,您必须使用 ===运算符。
也许这个例子对你来说会更清楚:
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.
因此在您的情况下,此 === 运算符用于仔细检查结果是否真的符合您的预期。
按照我的说法,你几乎是对的。
只需将该函数调用与三个等号一起放在 if
条件中。
if ( f(1) === 50 ){
console.log(true);
}
else {
console.log(false);
}
就是这样。
三重等于只是一个比较运算符。三重等于运算符一侧的函数调用表示从该函数返回的值。
因此,只需将其视为 javascript 中的任何其他 comparison operator
。
如果我误解了你的问题,请纠正我!
祝一切顺利!
我一直在研究 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,包括两者的类型而不仅仅是值。
可是为什么会被这么用呢??
请解释一下它的用法。
这是 link 我从哪里得到的。 http://es6-features.org/#RestParameter
f(1)===50
检查 f(1)
是否等于 50。如果此表达式的计算结果为 true,
,则此表达式的结果为 true
。否则就是false
。因为你没有把这个值赋给一个变量,所以你不能在任何地方使用它。
形式上,===
称为严格相等运算符。欲了解更多信息,请查看 here.
这是一个严格的比较测试函数 f(x,y,z)
是否在使用 x 参数值为 1 returns 时调用值 50。当默认参数值添加到值时,这将是正确的x
是 7 和 42。
这些函数的调用和对比,纯粹是为它们所调用的函数提供使用示例和可能的测试示例。
代码
function f (x, y, ...a) {
return (x + y) * a.length
}
f(1, 2, "hello", true, 7) === 9
是扩展参数处理的一个例子。 ...a
变量长度 属性 等于 3 因此测试确认在 x
和 y
.
这里的重点是它的示例代码。他们向您展示了使用这些参数调用时函数的结果等于某物。表达式本身不会执行任何操作,除非您将其粘贴到控制台中。
他们可以很容易地使用评论。
f(1, 2, "hello", true, 7) // 9
identity (===) 运算符的行为与 equality (==) 运算符的行为相同,只是没有进行类型转换, 类型必须相同才能被视为相等。
在您的示例中,如果您将所有三个数字类型的参数都放入,您将得到数字作为结果,然后检查结果是否具有正确的类型,您必须使用 ===运算符。
也许这个例子对你来说会更清楚:
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.
因此在您的情况下,此 === 运算符用于仔细检查结果是否真的符合您的预期。
按照我的说法,你几乎是对的。
只需将该函数调用与三个等号一起放在 if
条件中。
if ( f(1) === 50 ){
console.log(true);
}
else {
console.log(false);
}
就是这样。
三重等于只是一个比较运算符。三重等于运算符一侧的函数调用表示从该函数返回的值。
因此,只需将其视为 javascript 中的任何其他 comparison operator
。
如果我误解了你的问题,请纠正我!
祝一切顺利!