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