将函数变量分配给另一个函数

时间:2015-12-28 20:51:30

标签: javascript

首先 - 在这里使用Javascript的n00b,我确实尝试搜索代表类似概念的东西,如下所示,但是我找不到任何有用的东西......如果我的搜索技能相当有限,那么就无法接受。

我正在阅读Eloquent Javascript并在“嵌套范围”部分下面,有一些代码显示了函数的工作范围;以下是代码(还有一点我已经添加到实验中)

var landscape = function() {
    var result = ""; 
    var flat = function(size) { 
        for (var count = 0; count < size; count++)
            result += "_";
    };

    var mountain = function(size) {
        result += "/";
        for (var count = 0; count < size; count++)
            result += "'";
        result += "\\";
    };


    // my nonsensical code -- begin

    var myfunc = function(text) {
        console.log("this is only a block of text -", text);
    };

    // my non sensical code -- end


    flat(3);
    mountain(4);
    flat(6);
    mountain(1);
    flat(1);

    // this is what I was trying to do and see what happens here..
    mountain = myfunc("meh");
    // end of my nonsense

    return result;  
};
console.log(landscape());

我理解如果在我的函数(myfunc)中,如果我将值赋给result,那么当在最后一行返回result时,它将被覆盖的任何值都是在myfunc

中分配给它

我的问题在这里我想是能够将一个函数变量分配给另一个函数变量(mountain = myfunc)真正意味着什么?这个“特征”是否真的存在?如果没有,为什么Javascript允许这样的分配?

2 个答案:

答案 0 :(得分:0)

这一行:

mountain = myfunc("meh");

myfunc的返回值指定为mountain

由于myfunc仅记录某些内容,因此返回undefined(当没有给出明确的返回值时,这是默认的返回值)。

因此,在示例的最后,您mountainundefined

但是,当您具有返回其他值的函数时,这非常有用。例如:

function add(a, b) {
  return a + b;
}

function multiply(c, d) {
  return c * d;
}

function divide(e, f) {
  return e/f;
}

var multipliedThing = multiply(add(1,2), add(3,4));
var anotherMultipliedThing = multiply(add(5,6), add(7,8))

var result = divide(multiplied, anotherMultipliedThing);
// => 0.12727272727272726

上面有点做作,但它显示了一个用例,用于将函数的返回值赋给变量。

函数的核心概念一般是接受一些值并返回一个值。使用JavaScript(和许多其他语言),您可以获得&#34;的好处&#34; (我把它放在引号中,因为它在某些情况下是有争议的)函数产生副作用(即,改变函数之外的其他值)。因此,如果函数的目的是副作用,您可能不需要返回任何内容。

查找&#34;功能编程&#34;如果你对一点理论感兴趣。

答案 1 :(得分:0)

下面:

mountain = myfunc("meh");

您以myfunc为参数调用"meh"并将其返回值指定给mountainfunction记录文本并完成。由于它没有return语句,因此会返回undefined,因此mountain会在当天结束时保留undefined。如果,而不是那样,你这样做:

mountain = myfunc;

然后将名为myfunc的函数分配给mountain,因此,如果您在此操作后调用mountain,它将执行myfunc

  

我的问题在这里我想是能够做到的真正含义   将一个函数变量分配给另一个(mountain = myfunc)并且是   这样一个“功能”真的有用吗?如果没有,为什么呢   Javascript允许这样的分配吗?

这意味着您可以将函数存储在变量中。这是一个非常有用的功能,您最初定义landscapemyfuncmountain时自己使用它。基本上,function可以具有属性,因此对于持有function的变量,您可以做一些可能性。

相关问题