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后面的;(分号)应当出现在()(小括号)之外
- HDUOJ---The Moving Points
- HDUOJ---------Kia's Calculation
- HDUOJ----Good Numbers
- DP较为完整的知识
- HDUOJ----The Number Off of FFF
- HDUOJ-------Naive and Silly Muggles
- HDUOJ----A Computer Graphics Problem
- HDUOJ---(4708)Herding
- HDUOJ---(4708)Rotation Lock Puzzle
- HDUOJ---Hamming Distance(4712)
- HDUOJ-----Difference Between Primes
- HDUOJ----(4706)Children's Day
- poj-------Common Subsequence(poj 1458)
- poj----Maximum sum(poj 2479)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Codeforces Round #633 (Div. 2)D Edge Weight Assignment(构造、树的权值异或)
- Spring Web MVC 请求消息
- Codeforces Round #633 (Div. 2) A Filling Diamonds (假题,观察)
- 如何管理和组织一个机器学习项目
- Spring Web MVC 简单使用
- Spring 中的 JDBC
- IDEA 快键键:展开所有文件夹、折叠所有文件夹(自定义)
- mysql 数据库的悲观锁和乐观锁
- C语言 二维数组和指针的一些笔记
- Java SpringBoot2.3.4 配置redis 基于lettuce 同时支持集群与单机 配置密码加密 并使用redisson分布式锁
- 使用elasticsearch-dump迁移elasticsearch集群数据
- Python爬虫之scrapy的入门使用
- 告别传统工业互联网,提高数字管控思维:三维组态分布式能源站
- 爱奇艺iOS移动端网络优化实践:请求成功率优化
- Java数据类型