了解js函数

了解函数

函数是我们的一个数据类型,和数学的一次函数没有关系,函数是我们接触的第一个复杂数据类型
函数的作用就是把一段功能性代码放在一个 “盒子” 里面, 什么时候想用的时候, 直接把 “盒子” 里面的代码拿出来用就可以了

例子: 微波炉
把一个加热的功能放在了一个铁盒子里面, 只要你想加热东西的时候, 把微波炉开关打开, 就能把你放进去的内容加热
代码
就是我们在内存中开辟一个小空间, 把我们的代码放进去,然后给这个空间起一个名字, 叫做 xxx,以后我只要需要用到这个空间里面的代码的时候,把 xxx空间里面的代码执行一下

函数的创建

声明式函数

语法:

function 名字 () {}

function就是声明函数的关键字
函数名:就是你给这一段空间自定义一个名字,命名规则,规范和变量名一样
():存放参数的位置
{}:存放一段代码的位置

赋值式函数

语法:

var 名字= function () {}

var: 定义变量的关键字
名字: 就是我们给这个函数起的一个自定义名称
=: 赋值
function: 表示一个函数
(): 写参数的位置
{}: 存放一段代码的位置

函数的调用

不管哪种方式定义的函数, 他们的调用方式是一样的
调用语法:函数名()
函数名: 你要让哪个函数里的代码执行
(): 就是调用的意思

function demo1(){
	console.log('我是声明式函数');
}
var demo2= function () {
	console.log('我是赋值式函数');
}
demo1();
demo2();

调用时机的区别

当你调用一个函数的时候, 方式都是一样的,但是调用的时机, 取决于你使用哪种方式定义函数
声明式函数,可以在声明之前调用,也可以在声明之后调用
但是赋值式函数只能在声明之后调用,否则会报错

demo1();//正常调用
function demo1(){
	console.log('我是声明式函数');
}
demo1();//正常调用

demo2();//报错,demo2 is not a function,意思是demo2不是一个方法
var demo2= function () {
	console.log('我是赋值式函数');
}
demo2();//正常调用

函数的参数

形参

就是写在函数定义时候的 () 里面的
可以写多个, 多个的时候中间用 逗号(,) 分隔
就是一个只能在函数内部使用的变量
至于这个变量(形参) 的值是什么, 由函数的实参决定

实参

就是写在函数调用的时候的 () 里面的
可以写多个, 多个之间使用 逗号(,) 分隔
是一个准确的数据
用来给对应的形参赋值的

function demo (形参) {}//用来接收实参的值
demo(实参);//用来给形参赋值的

//多个参数
function demo (a,b,c) {
	console.log(a);//小明
    console.log(b);//男
    console.log(c);//20
}
demo('小明','男',20);

参数的个数关系

  1. 形参和实参一样多
    按照从左到右的顺序一个一个进行赋值

  2. 形参比实参多
    前面的一个一个对应的关系, 多出来的形参, 没有实参进行赋值
    在函数内部使用的时候, 就是一个没有赋值的变量, 就是 undefined

  3. 实参比形参多
    前面的一个一个对应的关系, 多出来的实参, 在函数内部没有形参接收
    相当于你白写了多出来的实参, 在函数内部不能直接使用

 //参数一样多
function demo1(a, b) {
	console.log(a);
	console.log(b);
}
demo1(10,20);

 // 形参多
function demo2(a, b, c) {
	// 在这个函数里面, c 就相当于定义了一个变量, 但是没有被赋值
	console.log(a);
	console.log(b);
	console.log(c);// c 在使用的时候就是 undefined
}
demo2(10,20);

// 实参多
function demo3(a, b, c) {
	// 我在这里不能直接使用传递进来的 40 50 60
	// 但是不会报错
	console.log(a);
	console.log(b);
	console.log(c);
}
demo3(10,20,30,40,50,60);

补充知识:arguments

函数内部的一个特殊的变量, arguments
在每一个函数内部, 都有一个天生的变量
不需要我们去定义, 直接就能拿来使用
这个变量叫做 arguments
表示所有实参的集合
详解 arguments
会把所有的实参按照从左到右的顺序依次排好
给每一个实参一个编号(索引 / 下标)
这个编号(索引 / 下标) 是从 0 开始的, 依次递增
当你需要获取到这里面的某一个的时候
你只要写 arguments[编号] 就能得到某一个准确的值
length
arguments 还有一个属性叫做 length
表示 arguments 这个集合的长度, 也就是里面有多少个数据
值是一个 number 数据类型的数字
如果你想得到这个属性就写 arguments.length
循环遍历arguments
使用循环遍历整个 arguments 获取到每一个数据
因为 arguments 的索引(下标) 是按照从 0 开始依次叠加的顺序
我们的循环刚好也可以给我提供一组有规律的数字
所以我们可以使用循环的方式来遍历 arguments

function demo(a, b, c) {
	// 我们传入了5个实参,所以arguments的length为5,索引分别是0 1 2 3 4
	console.log(arguments);
	// 使用循环提供一个从 0 ~ 4 的数字
	// 循环的结束位我们应该根据 arguments 的 length 来决定
	for (var i = 0; i < arguments.length; i++) {
		console.log(i) // i 得到的分别是 0 1 2 3 4
		// 当 i == 0 的时候, 使用 arguments[0]
		// 当 i == 1 的时候, 使用 arguments[1]
		// 当 i == 2 的时候, 使用 arguments[2]
		console.log(arguments[i]);//循环得出每个索引对应的值
	}
}
demo(10,20,30,40,50);

何时使用arguments

因为函数是我们提前定义好的, 为了更好的书写代码, 为了以后多次调用
当我们定义函数的时候, 我能确定以后我使用的时候的实参的个数,我们推荐使用形参的方式来获取, 因为方便
当我们定义函数的时候, 我不能确定以后我使用的时候的实参的个数,我们推荐使用 arguments 的形式来获取, 因为灵活

函数的返回值

什么是返回值: 也就是一个函数的结果
例子: 冰箱
函数: 就是封装一个功能, 冰箱就是封装了一个制冷的功能
参数: 就是在调用的时候传递, 你向冰箱里面放了什么东西
返回值: 就是调用完函数得到的结果, 冰箱能给你的一个什么
在函数里面添加返回值使用 return 关键字
你想让这个函数返回什么, 就写 return 你要返回的数据

function bingxiang(a) {
	// 形参 a 就是你传递进来的实参
	// 我是一个功能性的东西, 我的功能就是把你传递进来的东西冻起来
	var str = '我要把' + a + ' 冻住';
	// 把冻好以后的结果给你
	// 这个函数将来被调用以后能得到的结果
	return str;//这里str=我要把大象冻住
}
var result = bingxiang('大象');
console.log(result);//输出结果:我要把大象冻住

求和小案例

function demo() {
	// 准备一个初始变量, 用来接收计算结果
	var result = 0;

	// 循环遍历 arguments 的每一个参数
	for (var i = 0; i < arguments.length; i++) {
	// 把 arguments 里面的每一个参数都叠加到 result 变量身上
		result += arguments[i];
	}

	// 循环结束以后, result 就是 arguments 里面每一个数字的和
	return result;//返回result的值
}
demo(1,2,3,4,5,6,7,8,9,10);//传几个参数就是求几个参数的和

求质数小案例

质数是指在大于1的自然数中,除了1和它自身外,不能被其他自然数整除的数

// 判断你传入的参数 num 是不是一个质数
function demo(num) {
	//因为质数大于1,所以循环2和num之间的数是否能整除
	for (var i = 2; i < num; i++) {
		//一旦有能整除的数,则返回false,说明不是质数,return后面的代码不再执行
		if (num % i == 0) {
			return false;
		}
	}
	//如果代码执行到这里,说明没有能整除的数,返回true,这个数是质数
	return true;
}
demo(5);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值