return语句的用法

HTML5学堂:在函数当中,存在着return语句,今天我们就主要讲解一下return在函数中的作用,也来提一提return的默认值是多少,还有就是return语句的返回内容,在书写时需要注意什么。

return在函数中的作用

我们如果将函数看做一个加工厂,参数就是我们向加工厂投入的原料,具体的函数功能实际上就是加工的过程,而return语句代表返回值,就是加工厂在实现加工之后给“投资人”的成品。

换句话说,return语句的一个功能是——将函数处理/运行的结果返回给调用方。例如如下代码:

<script>
    function test(){
        var str = "HTML5学堂";
        return str;
    }
    var result = test();
    console.log(result);
</script>

打印出来的结果是——HTML5学堂。

return语句的另一个特点,则在于在函数当中,遇到return语句之后就意味着函数运行的结束,在此之后的代码是不运行的。

代码示例:

<script>
    function test(){
        var str = "HTML5学堂";
        return 0;
        console.log(str);
    }
    var result = test();
    console.log(result);
</script>

在上面这个示例当中,0被打印出来,但是‘HTML5学堂’并没有打印出来,原因在于console.log(str)这行代码位于return 0;之后,在遇到返回之后,函数就停止运行了。因此我们可以通过return语句控制函数是否结束。

return的默认值

在一些函数当中,我们有书写return语句,但是在有些函数中并没有出现return语句,那么此时,这些函数的返回值是多少呢?一起来看下面的代码示例:

<script>
    function test(){
        var str = "HTML5学堂";
    }
    var result = test();
    console.log(result);
</script>

通过代码示例的结果,我们能够看到,函数默认的返回值为undefined。(关于undefined的应用,在我们前面的一篇文章中有较为详细的介绍,感兴趣的各位可以点击查看——undefined与null的区别)

在书写return语句时需要注意什么

之前自己的一个学生遇到了一个较经典的案例,涉及到我们对return语句的理解以及作用域的基本知识。很多人都会掉进这个题目的坑里。先来看题目:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>H5course - HTML5学堂 - 刘国利</title>
</head>
<body>
</body>
<script>
    var str = "刘国利";
    function test(str){
        var str = "HTML5学堂";
        return
        {
            str;
        }
    }
    var result = test("H5course");
    console.log(result);
</script>
</html>

返回结果是什么呢?“HTML5学堂”,还是“刘国利”或者“H5course”?打印出来的结果,发现都不是上面我们假设的结果,而是“undefined”。

此处主要涉及的是JS语法的问题,在JS中,默认用分号结束一条语句,在return之后存在一个换行符,虽然没有分号,但是系统会默认为一句话的结束,增加一个分号,于是,上面JS代码中的return语句部分就等价于如下代码

return ;
{
    str;
}

那么,如果我们将{}的位置进行调整呢,将return与{放置在一行呢?如:

return { str; }

此时,会直接报错,原因在于,此处{str;}表示的是一个对象,但是很明显这种书写方式并不符合对象的书写格式。我们调整一下{},将{}替换成()就可以解决这个问题。另外,需要注意的是,str后面的;(分号)应当出现在()(小括号)之外

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2016-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java架构师

【SQL Server】系统学习之三:逻辑查询处理阶段-六段式

一、From阶段 针对连接说明: 1、笛卡尔积 2、on筛选器 插播:unknown=not unknuwn 缺失的值; 筛选器(on where having...

34011
来自专栏liulun

Nim教程【二】

第一篇教程1秒内就被管理员从首页踢掉了 管理员嫌内容太少,没有含金量,这次多写一些。 这应该是国内第一个关于Nim入门的系列教程 好,闲话休提,言归...

23310
来自专栏用户2442861的专栏

STL源码剖析-hash_set / hash_multiset

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

811
来自专栏盛国存的专栏

A Bite of GoLang(上)

A bite of GoLang(浅尝GoLang),本文只是Go语言的冰山一角,本文包含作者学习Go语言期间积累的一些小的经验,同时为了方便让读者了解到Go语...

53710
来自专栏coding

将序列分解为单独的变量

1014
来自专栏Python小屋

Python花式编程案例锦集(1)

首先解答上一篇文章详解Python中的序列解包(2)中最后的习题,该题答案为5,表达式功能为迭代求解序列中元素的最大值。 -----------------分割...

3555
来自专栏HTML5学堂

2016.01.04 HTML5真题练习

HTML5学堂:新的一年,新的开始~!元旦快乐~!每天一道题,强壮程序员!今日主要涉及去年12.30日题目的解答,以及一道涉及日期对象的题目。 HTML5真题【...

2997
来自专栏风口上的猪的文章

.NET面试题系列[10] - IEnumerable的派生类

IEnumerable分为两个版本:泛型的和非泛型的。IEnumerable只有一个方法GetEnumerator。如果你只需要数据而不打算修改它,不打算为集合...

992
来自专栏CDA数据分析师

Python3 大作战之 encode 与 decode 讲解

原文链接http://blog.csdn.net/qq_29053519/article/details/79170519 大家好,很久没更新了,也是年底了最近...

2635
来自专栏androidBlog

java Type 详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/de...

941

扫码关注云+社区