javascript函数范围挑战

Rad*_*adu 3 javascript

我遇到了一个使用函数范围概念的JavaScript问题.特别是,这是我需要解决的问题:

定义一个名为callFunc的函数,它接受一个参数,一个函数f.它应该返回一个包含值f(0),f(0),f(1),f(1)的数组.你只能拨打两次电话.

到目前为止我的代码是:

var f = function(x) {
    return x+2;
};

var callFunc = function (f) {
    return [f(0), f(1)];
};
Run Code Online (Sandbox Code Playgroud)

我不知道如何只使用两个调用和JavaScript函数范围原则返回四个元素的数组.

Nie*_*sol 6

这真的很简单:

function callFunc(f) {
    var f0, f1;
    f0 = f(0);
    f1 = f(1);
    return [f0,f0,f1,f1];
}
Run Code Online (Sandbox Code Playgroud)

我...不完全确定为什么你会遇到麻烦.减少函数调用的数量是你应该做的事情(这就是为什么我畏缩大多数jQuery代码,$(this)其中包含20次......)

  • 关于调用`$(this)`20次的注释:大多数前端代码应该异步执行并且只执行最少的工作.因为代码通常不是作为UI循环的一部分执行的,而是偶尔被称为这种微优化在很大程度上是不必要的.在优化*很重要的情况下,减少函数调用肯定是一种有用的技术,但有时候编写代码比编写尽可能快的代码更重要. (2认同)