Javascript 什么';这两个函数调用的区别到底是什么?

Javascript 什么';这两个函数调用的区别到底是什么?,javascript,function,invoke,Javascript,Function,Invoke,为什么在没有返回语句的情况下调用此函数: function addSmt1( num1, num2){ console.log(num1+num2) } addSmt1(2,3) 像这样 但不能在这里这样做: function addSmt( num1, num2){ return num1+num2; } let x = addSmt(2,4) console.log(x) 为什么我必须把一个返回函数的函数调用放在一个变量中才能调用它 顺便说

为什么在没有返回语句的情况下调用此函数:

function addSmt1( num1,  num2){

    console.log(num1+num2)
    
    }

addSmt1(2,3)
像这样

但不能在这里这样做:

function addSmt( num1,  num2){

    return num1+num2;

}

let x = addSmt(2,4)
console.log(x)
为什么我必须把一个返回函数的函数调用放在一个变量中才能调用它


顺便说一句,我是不是太强调这些“次要”细节了?

您可以调用包含返回的函数,而无需将调用放入变量中。但是如果不这样做,您将无法访问函数返回的数据

返回语句
在函数中放入
return
语句时,您告诉解释器可以为函数的返回值指定一个变量。这意味着在分配变量时,函数中的所有代码在分配返回值之前运行。假设你有这样一个函数:

函数倍数(a、b、c、d){
警报('正在运行!')
回报(a+b)*(c+d);
}
当您将变量(比如
product
分配给
multilysums(5,4,6,7)
)时,基本上是告诉解释器运行
multilysums
中的所有代码,然后返回值,在本例中为
117
。 现在,如果MultilySums被修改成这样呢

函数倍数(a、b、c、d){
警报('正在运行!')
警报((a+b)*(c+d));
}
请记住,不返回的函数称为voids。它们确实隐式返回一个值,即
undefined
(类似于Python,其中voids返回
None
),因此,这里您将为undefined分配一个变量。 如果您只是在没有赋值的情况下调用函数呢?让我们调用
multilysumsreturn
返回的函数和
multilysumsvoid
不返回的函数:

  • multilysumsvoid(1,2,3,4)
    提醒计算
  • multilysumsreturn(1,2,3,4)
    警报
    正在运行
    但不会提醒计算,除非您直接在控制台中运行,在这种情况下,它会隐式地将返回值记录到控制台
  • let product=multilysumsvoid(1,2,3,4)
    基本上是在没有赋值的情况下声明变量,因为void返回
    未定义的
    。是,您正在提醒计算,但无法使用此变量执行任何操作
  • let product=multilysumsreturn(1,2,3,4)
    将变量分配给返回值,这就是
    return
    关键字存在的原因!能够重用计算和值
希望它有意义,并为冗长的回答感到抱歉。

console.log()只是一个供用户参考的输出语句,因此它不返回任何值……因此,如果您只想显示总和,可以使用方法1,但如果您想将结果赋给变量,以便在其他计算中使用,则需要使用第二种方法