Javascript 使用调用函数比直接调用更快?
我用“Javascript忍者的秘密”中的脚本测试了性能:Javascript 使用调用函数比直接调用更快?,javascript,Javascript,我用“Javascript忍者的秘密”中的脚本测试了性能: 函数isPrime(数字){ 如果(数字
函数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和它有什么关系?除息的