将函数定义为 var 的目的(在 class 中)?

The purpose of defining a function as a var (in a class)?

我正在读这个 answer: 但我不明白为什么有人会将该函数定义为 var:

var setPrecision:Function = function(number:Number, precision:int) {
 precision = Math.pow(10, precision);
 return Math.round(number * precision)/precision;
}

var number:Number = 10.98813311;
trace(setPrecision(number,1)); //Result is 10.9
trace(setPrecision(number,2)); //Result is 10.98
trace(setPrecision(number,3)); //Result is 10.988 and so on

而不只是一个函数:

public function setPrecision(number:Number, precision:int) {
    precision = Math.pow(10, precision);
    return Math.round(number * precision)/precision;
}

我对所有内容都使用 classes。如果有人想传递 var 等,我可以理解它,但作为设置浮点精度的实用程序,我在这里看不到值。我看到的所有 related 个问题都与 JavaScript 有关。

我认为在 class 中是否正确,没有充分的理由将此函数定义为 var

这没有充分的理由,除非您想将此函数作为参数传递。 这只是写同样东西的另一种方式。

如果 var 是 class 的成员而不是方法中的局部函数,区别在于您可以覆盖每个对象中的函数以更改某些行为。

public class Foo {
    /**
    * By default we'll square the value to prepare it
    */
    public var prepareSomething:Function = function(n:Number):Number {
        return n * n;
    }

    public function doSomething(n:Number) {
        var x = this.prepareSomething(n);
        // do something with x
    }
}

现在你可以拥有这样的东西:

var foo = new Foo();
// we prefer to have n cubed for preparation here...
f.prepareSomething = function(n:Number):Number {
    return n * n * n;
}
foo.doSomething(123.45);

通常这不是一个很好的设计理念,但在某些时候它可能会派上用场。

我不知道当定义为 var 时,局部函数的处理方式是否会有所不同。分配或解除分配可能有所不同。

否则人们可能会发现 var 风格更清晰一点:是的,这个函数确实是本地的。功能上没有区别,两种方式都可以作为参数传递等等