JavaScript函数内if语句中的return到底是什么作用...

在学习DOM编程艺术一书

function test(){
//if(!document.getElementById("xx")) return false;
if(variable == 1) return true;
}
console.log(test());

两个if语句在不同的函数里,我这里为了方便把他们写到一起
第一句话我这样理解,如果浏览器没有这个方法,(括号内部是true),就退出这个整个函数。
今天看到第二个if,为什么括号里是true时也是退出这个函数?(第176页)
同时,如果在控制台中打印test(),得到是undefine...这个true到底被return到哪里了...
如果没有if,直接在函数中return,是能得到return的值的...
我是弟弟,我是弟弟,还请各位大佬不吝赐教...

阅读 6.2k
3 个回答

函数必有返回值,显性的返回或隐性的返回。
直接写return,显性返回,只要运行到该语句必然退出函数。
不写return,运行到函数体最后一句便返回,一般等价于在函数体末尾加一句return;(当然这说法并不绝对,因为部分高阶函数在函数体只有一条语句或表达式时,可省略了显性的return,直接返回函数体结果;另外promise返回的是promise)
js是弱类型语言,函数也没有类型之分,并不规定其函数是空类型函数、布尔类型函数,亦或是指针函数等等,所以函数运行后得到结果要么是return的返回,要么是特殊类型的返回,或者undefined

return 的语义就是结束当前函数,返回一个值。
简单说,该函数下面的代码不会再跑。
在红宝书的 性能优化 章节,提出了,函数尽早返回的优化设计。
当已经知道运算结果,或确定了对象的状态,后面的无意义的运行,对于程序来讲,是垃圾时间。
同时,合理的尽早 return 可以提高可读性。
当然你也可以最后统一一个地方返回,可读性也很高。不要运行无意义的代码。顾名思义,最快的时间复杂度,是 0 。

我的理解是,代码是顺序执行的,当执行到return的时候,会直接返回return后面的结果,后面的代码是不会继续执行的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题