【问题标题】:What is the relationship between a function and a value?函数和值之间是什么关系?
【发布时间】:2013-04-12 04:20:20
【问题描述】:

函数和值之间有什么关系?我认为函数是一种值;但是,函数既包含值(参数)也包含返回值。


我(显然)是编程新手,并且希望确保我在学习 JavaScript 时拥有坚实的概念基础。

【问题讨论】:

标签: javascript theory


【解决方案1】:

函数做事。变量保存值(数据)。

函数可以接受数据作为参数。函数也可以返回数据,但不是必须的。考虑这个函数,它只是将两个数字相加:

function addNumbers(numberA, numberB) {
    var total = numberA + numberB;
    console.log(total);
}

这是一个接受两个参数的函数。在函数的代码块中,这些参数的值被分配给变量numberAnumberB。该函数的代码创建另一个变量total,并将numberA 的值与numberB 的值相加。然后该函数调用另一个函数console.log,并将total 的值作为参数传入。

现在,该函数也可以返回值。让我们稍微修改一下这个函数:

function addNumbers(numberA, numberB) {
    var total = numberA + numberB;
    return total;
}

如果你现在调用这个函数,你会得到total 的值。如果我要运行这个:

console.log(addNumbers(5, 5));

您会在控制台中看到10。我的数字文字值作为参数传递给addNumbers。该函数完成了它的工作并将其total 变量的值返回给我。该值现在作为参数传递给console.log

如果还不是很清楚,请在继续之前在线阅读其他教程。

现在,在 JavaScript 中,函数就像其他任何东西一样。您也可以将它们分配给变量!

var newAddNumbers = addNumbers;
console.log(newAddNumbers(5, 5)); // Also returns 10 in the console

当你输入时:

function someFunction () {

这与:

var someFunction = function () {

函数本身被赋值给变量someFunction。在我们最初的示例中,函数本身被分配给addNumbers。所以是的,函数是一种类型,就像数字、对象、布尔值等一样。

【讨论】:

  • "...is no different than..." - 好吧,对于这个问题,差异可能无关紧要,但是 is显着差异。
  • @nnnnnn,你能详细说明一下吗?不久前,我在另一个线程上进行了讨论,这就是我们得出的结论。我看看能不能挖出来。
  • 尝试在 before 行调用该函数 - 你会发现它适用于第一种声明风格,但不适用于第二种。同样像var func = makeFunction();makeFunction() 返回对其他函数的引用)之类的东西只能以第二种方式工作。有quite a few questions about this时,此处不再赘述,例如this one
  • @nnnnnn,是的,这是有道理的。定义为function someFunction 的函数与变量一起被提升,而对于var someFunction = function,变量被提升,但与其他任何东西一样,设置它不是。我从来没想过!
【解决方案2】:

如果我有一个函数:

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

add 是一个函数。所有函数都是值;例如,我可以将它们放在变量中或将它们作为参数传递。

abadd 的参数,但该函数尚未被调用,因此它们没有值。同样,该函数已被调用,因此它没有返回值。

当我调用函数时:

add(1, 2);

函数执行时,ab 初始分别设置为 12 用于该调用。

如果我用不同的参数再次调用它:

add(3, 4);

那么这次ab初始设置为34;但是,这些ab 不仅具有与上次不同的值;它们确实是不同的变量。每次调用函数时,参数本质上都是变量,这些变量不仅是该函数的本地变量,也是该函数的调用

【讨论】:

    猜你喜欢
    • 2021-01-04
    • 2012-01-30
    • 2012-08-12
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2018-06-13
    相关资源
    最近更新 更多