Javascript 使用调用函数比直接调用更快?

Javascript 使用调用函数比直接调用更快?,javascript,Javascript,我用“Javascript忍者的秘密”中的脚本测试了性能: 函数isPrime(数字){ 如果(数字

我用“Javascript忍者的秘密”中的脚本测试了性能:

函数isPrime(数字){
如果(数字<2){
返回false;
}
for(设i=2;i控制台。时间结束(“iPrime”)
您的比较不准确,因为传递给
apply
的第一个参数是被调用函数的
this
值,而传递给
apply
的第二个参数是要调用函数的参数数组。因此,您的
apply
没有使用任何参数调用
isPrime
,因此不会运行迭代,因为当
i
为2且
number
未定义时,条件
i
未满足:

函数isPrime(数字){
console.log('用'+号码呼叫);
如果(数字<2){
返回false;
}
for(设i=2;i控制台。时间结束(“iPrime”)的语法为.apply

apply(thisArg,[argsArray])

第一个参数thisArg在调用函数时引用'this'的值,在您的例子中是isPrime.apply(1299827)。您将1299827作为'this'传入,但没有参数,因此它实际上是isPrime(),for循环没有执行,因此速度更快
更多信息。请在此处申请

您必须阅读此内容

参考:

这一点是
Array.prototype.apply(context=This,args=[])
,所以您的代码是错误的

把你的代码改成这个

// incorrect.
isPrime.apply(1299827);
// correct.
isPrime.apply(this, 1299827);

要证明你的代码是错误的,请尝试
console.log(isPrime.apply(1299826))。。。注意:不管你提供什么参数,甚至是一个字符串,比如“紫色恐龙”
,结果总是
true
@JaromandaX,Barney和它有什么关系?除息的