JavaScript-----9.函数
1.函数的使用
1.1 声明函数和调用函数
//1.声明函数
//function 函数名() {
// //函数体
//}
function sayHi() {
console.log('hi~');
}
//2.调用函数
//函数名();
sayHi(); //hi~
案例:利用函数计算1~100之间的累加和
function getSum() {
sum = 0;
for (var i = 1; i <= 100; i++) {
sum = sum + i;
}
console.log(sum);
}
getSum(); //5050
getSum(); //5050
2.函数的参数
2.1语法格式
//1.声明
//function 函数名(形参1, 形参2,...) {
// //函数体
//}
//2.调用
//函数名(实参1, 实参2,...);
function cook(aru) {
console.log(aru);
}
cook('酸辣土豆丝'); //酸辣土豆丝
说明:
- 函数的参数可以有,也可以没有,个数不限
2.2案例:利用函数求任意两个数之和
function getSum(a, b) {
console.log(a + b);
}
getSum(1, 5); //6
getSum(66, 66); //132
2.3案例:利用函数求任意两个数之间的数之和
function getSum(a, b) {
var sum = 0;
for (var i = a; i <= b; i++) {
sum = sum + i;
}
console.log(sum);
}
getSum(1, 100); //5050
getSum(2, 6); //20
说明:形参可以是看作两个不用声明的变量
2.4函数实参和形参不匹配问题
function getSum(num1, num2) {
console.log(num1 + num2);
}
//1.如果实参的个数和形参的个数一致则正常输出
getSum(1, 2); //3
//2.如果实参个数多于形参个数则会取到形参的个数
getSum(1, 2, 3); //3
//3.如果实参个数小于形参个数
//由于形参是可以看作不用声明的变量 num2是一个变量但是没有接收值,那num2就是undefined
getSum(1); //NaN
//建议:尽量让实参的个数和形参的个数相匹配
3.函数的返回值
3.1语法格式
//格式
function 函数名() {
return 需要返回的结果
}
函数名();
3.2运用
function getResult() {
return 666;
}
getResult();
console.log(getResult()); //666
3.3之前程序的改进
function cook(aru) {
return aru;
}
console.log(cook('酸辣土豆丝')); //酸辣土豆丝
function getSum(num1, num2) {
return num1 + num2;
}
console.log(getSum(1, 2)); //3
3.4案例
案例1:利用函数求两个数的最大值
方法1:
function getMax(a, b) {
if (a > b) {
return a;
} else {
return b;
}
}
console.log(getMax(1, 5)); //5
console.log(getMax(10, 5)); //10
方法2:
function getMax(a, b) {
return a > b ? a : b;
}
console.log(getMax(1, 5)); //5
console.log(getMax(10, 5)); //10
案例2:利用函数求数组中的最大值
function getArrMax(a) {
var len = a.length;
var max_value = a[0];
for (var i = 1; i < len; i++) {
if (a[i] > max_value) {
max_value = a[i]
}
}
return max_value;
}
var re = getArrMax([5, 2, 99, 101, 67, 77]);
console.log(re); //101
3.5注意事项
- return除了可以返回函数值之外,还可以终止函数,即return之后的代码不会被执行
- return只能返回一个值,如果用逗号隔开多个值,以最后一个值为准
//1.终止函数
function getSum(num1, num2) {
return num1 + num2;
alert('我是不会被执行的哦!');
}
console.log(getSum(1, 2));
//2.return只能返回一个值
function fn(num1, num2) {
//如果用逗号隔开多个值,以最后一个值为准 返回num2
return num1, num2;
}
console.log(fn(1, 2)); //2
案例:求两个数的加减乘除
function getResult(num1, num2) {
return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
}
var re = getResult(6, 3);
console.log(re);
- 若函数没有return 则返回的是undefined
function fun() {
}
console.log(fun());//undefined
3.6 break continue return的区别
- break:结束当前的循环
- continue:跳出本次循环,继续执行下次循环
- return: 不仅可以退出循环还可以返回return语句中的值,同时还可以结束当前函数体内的代码
3.7作业
作业1:写一个函数,用户输入任意两个数字的任意算数运算,弹出运算后的结果(简单计算器)
function cal() {
num1 = prompt('请输入第一个数');
symbol = prompt('请输入运算符号');
num2 = prompt('请输入第二个数');
switch (symbol) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '/':
return num1 / num2;
}
}
alert(cal());
作业2:写一个函数,用户输入三个不同的数值,返回最大值
function maxnum(num1, num2, num3) {
if (num1 > num2) {
if (num1 > num3) {
return num1;
} else {
return num3;
}
} else {
if (num2 > num3) {
return num2;
} else {
return num3;
}
}
}
作业3:写一个函数,用户输入一个数,判断是否是素数(可被1和自身整除的数)
function prime(num) {
for (var i = 2; i <= num / 2; i++) {
if (num % i == 0) {
return num + '不是素数';
}
}
return num + '是素数';
}
alert(prime(2));//2是素数
4.arguments的使用
之前提到过函数的实参和形参最好匹配上,否则如果实参多了可能会用不上,实参少了可能会出问题。当我们不确定有多少个参数传递的时候,可以用arguments来获取。在JavaScript中,arguments是当前函数的一个内置对象。所有的函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。
伪数组
arguments展示形式是一个伪数组,因此可以进行遍历,伪数组具有以下特点:
- 具有length属性
- 按索引方式存储数据
- 可以遍历数组
- 不具有数组的push、pop等方法
//arguments的使用
function fn() {
console.log(arguments); //Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]arguments是一个伪数组里面存储了所有传递过来的实参
//arguments是伪数组
console.log(arguments.length); //有长度3
console.log(arguments[2]); //可索引3
//可以按数组的方式遍历arguments=[1,2,3];
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
fn(1, 2, 3);
利用arguments求任意两个数的最大值
function maxnum() {
var max = arguments[0];
for (var i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
rel = maxnum(2, 5, 66, 2, 69, 129, 333, 2, 0);
console.log(rel);
5.函数的案例
5.1案例1
要求:利用函数封装的方法翻转任意一个数组
//利用函数封装的方法翻转任意一个数组
function reverArr(arr) {
var arrNew = [];
for (i = arr.length - 1; i >= 0; i--) {
arrNew[arrNew.length] = arr[i];
}
return arrNew;
}
var a = [1, 2, 3, 4, 6, 8, 2, 6, 8];
var re = reverArr(a);
console.log(re);
5.2案例2
要求:利用函数封装的方式对数组排序(冒泡排序)
//冒泡排序
//对于i的范围:1个数,不用排; 两个数,排1趟; 三个数 排2趟。。。n个数,排n-1趟
//对于j的范围,n个数:第一趟比较n-1次,第二趟比较n-2次。。。第n-1趟比较1次
function sort(arr) {
var temp;
for (i = 0; i < arr.length - 1; i++) {
for (j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
console.log(sort([4, 1, 6, 88, 9, 3, 666])); //(7) [1, 3, 4, 6, 9, 88, 666]
5.3案例3
要求:输入一个年份,判断是否是闰年(闰年:能被4整除且不可以被100整除或者可以被400整除)
<script>
//输入一个年份,判断是否是闰年(闰年:能被4整除且不可以被100整除或者可以被400整除)
function leap(year) {
var flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
console.log(leap(2000)); //true
console.log(leap(1999)); //false
</script>
5.4一个函数可以调用另一个函数
案例4
要求:用户输入年份,输出当年二月份的天数,即如果用户输入的是闰年二月份就是29天,如果用户输入的是平年,二月份就是28天
function backDays() {
year = prompt('用户输入年份');
if (leap(year)) {
return alert(year + '年的二月份天数为' + 29 + '天');
}
return alert(year + '年的二月份天数为' + 28 + '天');
}
backDays()
//输入一个年份,判断是否是闰年(闰年:能被4整除且不可以被100整除或者可以被400整除)
function leap(year) {
var flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
6.函数的两种声明方式
- 利用函数关键自定义函数
- 函数表达式
//函数的2种声明方式
//1. 利用函数关键自定义函数(命名函数)
function fn() {
}
fn();
//2.函数表达式 匿名函数
//var 变量名=function(){}; 注意fun是变量名而不是函数名
var fun = function(aru) {
console.log('我是函数表达式'); //我是函数表达式
console.log(aru); //我是pink老师
}
fun('我是pink老师');
//(1)fun是变量名 不是函数名
//(2)函数表达式声明方式和声明变量差不多,只不过变量里存的是值,函数表达式里存的是函数
//函数表达式也可以进行传递参数
JavaScript-----9.函数的更多相关文章
- JavaScript中函数函数的定义与变量的声明<基础知识一>
1.JavaScript中函数的三种构造方式 a.function createFun(){ } b.var createFun=function (){ } c.var createFun=new ...
- 理解 JavaScript 回调函数并使用
JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...
- 5种 JavaScript 调用函数的方法
一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性 ...
- javascript escape()函数和unescape()函数
javascript escape()函数和unescape()函数 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法: escape(string) stri ...
- JavaScript调用函数的方法
摘要:这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正 ...
- Javascript常用方法函数收集(二)
Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...
- javascript工具函数
第一部分 JavaScript工具函数 转义特殊字符为html实体 HtmlEncode: function(str){ return str.replace(/&/g, '&') ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- javascript篇-----函数作用域,函数作用域链和声明提前
在一些类似C语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的(也就是我们不能在代码段外直接访问代码段内声明的变量),我们称之为块级作用域,然而,不同于 ...
- JavaScript 常用函数总结
javascript函数: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数 .cookie函数 1.常规函数 javascript常规函数包括以下9个函数: (1)alert ...
随机推荐
- Golang 在电商即时通讯服务建设中的实践
马蜂窝技术原创文章,更多干货请搜索公众号:mfwtech 即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等 ...
- idea实现简单热部署
首先我们打开设置tomcat的页面
- BIOS安全设置
1.开机按F2进入BIOS 2.进入 Security 界面 3.Set user password 用户密码 开机密码 设置为123456 4.Set supervisor password 进BI ...
- ==和equals的深度分析
==的分析 1.对于基本数据类型,比较的是他们的具体内容是不是一样,跟他们的内存地址无关.举个栗子: public class Test{ public static void main(String ...
- mysql5.x数据库文件导入mysql5.7数据库出错解决方法
由于mysql5.7 timestamp 类型不允许timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',创建表的是后会报异常 修改mysql5.7的配置文 ...
- 区块链学习——HyperLedger-Fabric v0.6环境搭建详细教程
v0.6 的架构相对简单,适合作为实验或学习来使用. 一.环境准备 一台云服务器(笔者使用的是阿里云的1核-2GB内存) Go语言环境 Docker安装 docker-compose安装 二.环境搭建 ...
- springboot 使用阿里云短信服务发送验证码
一.申请阿里云短信服务 1.申请签名 2.申请模板 3.创建accesskey(鼠标悬停在右上角头像) 二.代码实现 1.springboot引入maven依赖 <dependency> ...
- 图片验证码推导逻辑,Image.new,ImageDraw, ImageFont.truetype的用法
#一, 创建图片并在图上添加文本 from PIL import Image,ImageDraw,ImageFont a = '我们不一样' # 定义文本 font = ImageFont.truet ...
- CSS 计数器详解
在前端开发中总少不了列表项,对于列表项序号,射鸡师一般会列出个1,2,3...序号.在不了解css计数器属性之前,我一般会用精灵图,用类名来区分序列号图片.这样做尽管可以达到目的,但是很不方便,开发过 ...
- Typroa 常用快捷键
Typora 常用快捷键 文件操作 Ctrl + N :新建文件 Ctrl + shift + N :新建窗口 Ctrl + O :打开 Ctrl + P : 快速打开(快速打开之前编辑过的历史文件) ...