我是Javascript的新手。在下面的示例中,我不了解call()
函数的用法:
为什么会有null
个参数?我认为这应该是一个对象。
+
之前的y.call(null, page, i, pages)
是什么意思?
我们可以在任何参数括号内做一个赋值吗?与我们分配isNaN
value = ...
相同
醇>
for (i = 0; i < n; ++i) {
if (isNaN(value = +y.call(null, page, i, pages)))
break;
...
}
提前谢谢!
答案 0 :(得分:2)
- 为什么会有
醇>null
个参数?我认为这应该是一个对象。
Function#call
期望作为第一个参数thisArg
。
<强> thisArg 强>
可选。这个值为
function
的调用提供了。请注意,this
可能不是方法看到的实际值:如果方法是non-strict mode中的函数,则null
和undefined
将替换为全局对象,原始值将转换为对象。
这部分适用于this
。如果没有给出/不必要,则通常使用null
或undefined
。
- 醇>
+
之前的y.call(null, page, i, pages)
是什么?
这是一个unary plus +
,它将字符串转换为数字。
- 我们可以在任何参数括号内做一个赋值吗?与我们分配
时的isNaN
value = ...
相同 醇>
是的,但不是一种好的风格,而是短暂的。
答案 1 :(得分:1)
null
,则传递 this
。在这种情况下,你真的可以直接调用函数。
+
前面的y
是将返回值转换为数字的隐式方法。
你通常可以在一个电话中做一个任务,但这并不总是一个好主意,因为它会使代码更难阅读。