JS中的函数

1、为什么需要函数:

// 虽然for也能实现一些简单的 重复操作,但是 比较具有局限性。

// 我们js 里面,也有非常多的相同代码,可能需要大量重复使用。 此时我们可以利用函数。

1.1 为了解决代码的重用!(代码的复用 )

1.2 减少代码量

2、函数的封装:

// 函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口( 把代码写在函数中, 通过函数名()就可以指定函数里面的代码 )

// 简单理解:封装类似于将电脑配件整合组装到机箱中 ( 类似快递打包)

3、什么是函数:

// 函数就是封装了一段可被重复调用执行的 代码块。 可以实现大量代码的重复使用。

// 函数是可以被命名的,它是为了解决某些功能的代码段!

// 可以被命名:表示函数是可以有名字的,也是可以没有名字的。

// 代码段:函数体

4、函数的分类:

// 分为系统内置函数和自定义函数

// 系统内置函数就是js给我们提供的函数,我们可以直接使用

// 自定义函数就是程序员根据需求自定义封装的函数

5、定义函数(声明函数):

5.1 语法 :

function 函数名( 形参1,形参2 ,形参3... ){

函数体;

return 返回值;

}

5.2 结构说明:

1. function是定义函数的关键字, 区分大小写

2. 函数名可以自定义,但是有规则和规范,跟变量名的规则和规范一样的 由a~z A~Z 0~9 _ $组成 不能以数字开头 不能使用js中的关键字和保留字

3. ()里面的是形参列表,形参就是形式参数, 形参可以省略 "形参的作用是为了接收调用函数的时才能确定的值" 形参其实就是一个变量,接收值使用的 形参是在函数中使用的; 在()里面写形参的时候,不需要加上var关键字; 形参如果没有接收到实参值的时候,默认形参的值undefined

4. 函数体就是封装在函数中的代码块, 函数体被封装到函数里面以后, 函数体代码不会执行 函数体代码需要函数被调用以后才会执行 函数被调用几次, 函数体就会执行几次

5. return 返回值, 是向函数的调用者返回指定的值 return语句可以省略

6、调用函数语法:

// 函数名( 实参1, 实参2, 实参3 ... )

7、结构说明

7.1 实参就是实际参数, 实参可以省略; "建议遵循定义函数的时候有多少个形参,我们在调用函数就传递多少个实参"

// 先写功能代码,实现功能,再封装成函数

7.2 函数形参和实参数量不匹配时:

// 1. 函数调用的时候实参不是必需的,javascript允许在调用函数的时候省略实参

// ❤❤❤实参个数等于形参个数

// 实参个数比形参个数少

// 实参个数比形参个数多

// 2. 通过 函数名.length 可以得到形参的个数

// 3. 不能省略前面的参数,只能省略后面的参数;如果一定要省略前面的参数,可以传入undefined

7.3 return关键字

7.3.1 一般在函数体里面不会有输出语句,只会有一个return关键字,将我们要输出的内容返回给"函数的调用者"。

7.3.2 return关键字是在函数体里面使用

7.3.3 如果函数体中没有return返回值, 或者只写return关键字,没有return具体值, 那么函数的调用者将得到undefined

7.3.4 return它在函数体使用有两层含义:

// 第一层含义: 当函数体里面遇到了return关键字以后,当前的这个return后面的函数体就不会再往下进行执行了。

// 第二层含义:它会向"函数的调用者"返回数据 (重点) 返回值

7.3.5 return后面如果想返回多个值, 但是多个值使用逗号隔开, 那么只能得到最后一个值

7.3.6 return后面如果想返回多个值, 我们可以把多个值放在一个数组或者对象中

7.4 函数中的arguments对象

// arguments是一个关键字,只能在函数中使用, 它的取值是一个对象,所以也称之为arguments对象 arguments的值也是一个伪数组 "会把所有实参放在一个伪数组中" 伪数组就是类似数组一样 有length长度属性 有下标 但是它不是真正的数组 不能使用数组对象的内置方法

// arguments对象用在形参个数不确定的时候

8、同名函数覆盖问题:

8.1 在同一个<script>标签里面

定义多个相同函数名的函数的时候,后面定义的函数会覆盖前面定义的函数

// JS运行的时候,会分为预解析阶段和代码执行阶段

// 预解析阶段主要负责检查语法,变量提升,函数提升等

// 代码执行阶段,就是按一定的顺序,执行我们的JS代码

8.2 在不同的外部js文件中, 定义多个相同函数名的函数, 在同一个页面中引入这些js文件, 后面引入的js文件定义的函数会覆盖前面引入js文件定义的函数

8.3 不同script标签

块中的定义的同名函数互不影响

9、匿名函数

9.1 什么是匿名函数? 没有名字的函数 称之为匿名函数

9.2 匿名函数的使用

// 匿名函数需要"赋值给变量"或者"赋值给事件" 或者 "立即调用这个匿名函数"

9.3 调用匿名函数

匿名函数赋值一个变量

9.4 语法:

// 变量名();

// 把匿名函数赋值给一个事件(DOM知识)

// 事件被触发以后,就会执行相应的函数

9.5 立即调用的函数表达式( IIFE ):

// 也可以叫自调用匿名函数 , 简称 IIFE ( Immediately-invoked function expression )

// 自调用匿名函数使用场景: 只需要执行一次,不需要重复调用

// 在定义函数之后,就会立即调用该函数,语法如下:

;(function(){

函数体

}());

// 或者

;( function(){

函数体

} )(); 

// 注意:两种写法最后的分号都是必须的。如果省略分号,遇到连着两个 IIFE,可能就会报错。

10、其他定义函数的方式:

❤❤❤10.1 "函数声明方式" function 关键字 (命名函数) 用的多

语法:

function 函数名( 形参1, 形参2, 形参3...){

函数体;

return 返回值;

}

❤❤10.2 "函数表达式" 其实就是把匿名函数赋值给一个变量 用的多 

10.3 构造函数 new Function() 用的不多 了解即可

语法:

var 函数名 = new Function("形参1", "形参2", ..., "函数体");

// 注意: new Function()定义函数的时候, new Function()里面的参数都是字符串

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨桃贝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值