我正在阅读一本非常全面的javascript编程书。在语言基础的“功能”部分,我得到了以下内容:
“也可以在不指定返回值的情况下使用return语句。当以这种方式使用时,函数会立即停止执行并返回undefined作为其值。这通常用于不返回值的函数早期的函数执行,如下例所示,不会显示警告:“
function sayHi(name, message) {
return;
alert(“Hello “ + name + “, “ + message); //never called
}
我试图理解为什么有人会这样做。为什么要写一个返回“undefined”的函数?我已经尝试使用谷歌搜索,并搜索,但没有太多的运气,虽然这可能是因为我没有正确地描述我的搜索,因为我正在学习js。
任何人都可以给我一个真实世界的例子,告诉我这可能有用,以便我能理解吗?
答案 0 :(得分:6)
通常这是一个有条件的回报。像
这样的东西function calculateSomething(obj, condition) {
if (condition !=0 ) return;
obj.data = obj.data * 42;
}
在这种情况下,如果某些条件失败 - 函数立即退出。否则,传递对象中的数据将被修改。
答案 1 :(得分:2)
您提供的功能无用......
然而,并非每个功能都需要返回一些东西。有时一个功能可以做其他事情"其他地方"并且返回的值无关紧要。
答案 2 :(得分:1)
该功能可能有副作用,例如改变页面状态。然后,调用者可能不会期望任何返回值。
答案 3 :(得分:1)
在我看来,从大师那里学到了,这里的想法只是暂时禁用该功能。因此,如果您需要向sayHi()
调用x个函数,例如在转发器中或分散在多个文件上,那么这个想法对于没有值的return;
来说非常有用。有用?是的,为了避免注释掉代码块,但就是这样。
将此保留在开发环境中,最初将进入www
,你不应该这样写它,并始终确保:当一个函数必须返回“某事时“然后,无论条件如何,”某事物“总是有价值的。具有最低值a boolean
=> return false;
。这计算该函数内的每个代码块=> for if else while ...
/* INCORRECT: it only returns something conditionally */
function do(something){
if (condition){
return false;
}
}
/* CORRECT: it returns value no matter what the condition */
function do(something){
if (!condition){
return true;
}
return false;
}
/* OPTIMIZED: a lot of ideas can be optimized, especially when returning booleans */
function do(something){
return !condition;
}
规则仅适用于您要编写正确代码的情况。使用jslint,jshint或re-sharper等工具有助于理解编写ecmascript有效代码的基本原则。由于并非每个人都了解这些规则,因此所有示例都会产生相同的结果。在“它工作,但它不是有效的代码”的感觉。
答案 4 :(得分:0)
因为JS函数是一个对象(具有:Attributs +方法)
并且,对象应该具有可以未定义的值。
证明是
function sayHi(){}
可以像对象一样处理它甚至调用它:
var returnedValue=sayHi.call() ;
如果sayHi
未返回任何内容,returnedValue
将为undefined
答案 5 :(得分:0)
示例如果要使用类我确定它将使用setter函数为实例属性赋值。
像这样:
function Something(val) {
this.value = val;
}