看博客时,注意到return的重要性

参考:http://www.cnblogs.com/raoyunxiao/p/5644032.html

看似反常的例子:

var i = 0;
function fn(){
i++;
if(i < 10){
fn();
}else{
return i;
}
} var result = fn();
console.log(result);

输出undefined(谷歌浏览器输出两个undefined,是因为javascript函数都有默认返回值,没有写,就是undefined。执行fn()得到一个,再console.log()一个。)

如果加一个return,就是我们想要的结果了。

var i = 0;
function fn(){
i++;
if(i < 10){
return fn();
}else{
return i;
}
} var result = fn();
console.log(result);

看图:

也就是说,执行fn(),会进入自身循环 。循环是在第5行进入的,会等它里面执行完回来,才会执行下一行。

而它在里面执行时,虽然i自加到10了,但回来时没有return回来。默认就是undefined,往下执行结束函数。结果就是undefined。

比如算法的二分法、深度优先搜索、递归等等,都是要return回来。

最新文章

  1. java1.8常用的函数式接口
  2. WindowsForm菜单工具栏--2016年12月6日
  3. Spark相关
  4. POJ 1635 树的最小表示法/HASH
  5. BSS Audio&#174; Introduces Full-Bandwidth Acoustic Echo Cancellation Algorithm for Soundweb London Conferencing Processors
  6. 头文件 string.h cstring string 区别
  7. 使用Keytool工具生成证书Keystore和证书签名请求文件
  8. sqlite3使用事务处理[zz]
  9. 微信小程序没有返回按钮怎么办?微信小程序左上角返回按钮怎么调出来?
  10. sql server 性能调优之 资源等待PAGEIOLATCH
  11. Android JNI中C调用Java方法
  12. Git远程分支的回退
  13. spring 给一个类 生成test
  14. mysql识别中文
  15. docker的网络模式
  16. spring boot整合shiro后,部分注解(Cache缓存、Transaction事务等)失效的问题
  17. 重载的方式写Python的post请求
  18. HTML5学习笔记:跨域
  19. C# if为false仍然进入方法体,==和qeual结果不一致
  20. [MySQL 5.6] MySQL 5.6 group commit 性能测试及内部实现流程

热门文章

  1. “.Net 社区虚拟大会”(dotnetConf) 2016 Day 2 Keynote: Miguel de Icaza
  2. C# 中参数验证方式的演变
  3. SQL数据库之DQL
  4. 简约之美Jodd-http--深入源码理解http协议
  5. Newtonsoft.Json设置类的属性不序列化
  6. Android之ContentProvider数据存储
  7. 烂泥:数据库管理之phpmyadmin免密码配置
  8. Handler
  9. 山寨Unity3D?搜狐畅游的免费开源游戏引擎Genesis-3D
  10. 《深入理解Java虚拟机》类文件结构