带有null参数的call()函数

时间:2018-02-03 21:03:42

标签: javascript

我是Javascript的新手。在下面的示例中,我不了解call()函数的用法:

  1. 为什么会有null个参数?我认为这应该是一个对象。

  2. +之前的y.call(null, page, i, pages)是什么意思?

  3. 我们可以在任何参数括号内做一个赋值吗?与我们分配isNaN

  4. 时的value = ...相同
        for (i = 0; i < n; ++i) {        
            if (isNaN(value = +y.call(null, page, i, pages)))
            break;
            ...
            }
    

    提前谢谢!

2 个答案:

答案 0 :(得分:2)

  
      
  1. 为什么会有null个参数?我认为这应该是一个对象。
  2.   

Function#call期望作为第一个参数thisArg

  

<强> thisArg

     

可选。这个值为function的调用提供了。请注意,this可能不是方法看到的实际值:如果方法是non-strict mode中的函数,则nullundefined将替换为全局对象,原始值将转换为对象。

这部分适用于this。如果没有给出/不必要,则通常使用nullundefined

  
      
  1. +之前的y.call(null, page, i, pages)是什么?
  2.   

这是一个unary plus +,它将字符串转换为数字。

  
      
  1. 我们可以在任何参数括号内做一个赋值吗?与我们分配isNaN
  2. 时的value = ...相同   

是的,但不是一种好的风格,而是短暂的。

答案 1 :(得分:1)

如果希望在调用的调用中没有对象绑定到null,则传递

this。在这种情况下,你真的可以直接调用函数。

+前面的y是将返回值转换为数字的隐式方法。

你通常可以在一个电话中做一个任务,但这并不总是一个好主意,因为它会使代码更难阅读。