JS函数基础回顾

JS函数基础回顾

目录

  1. 数学中的函数
  2. 函数的作用
  3. 函数的声明方式
  4. 形参和实参
  5. 函数的返回值
  6. 函数式编程
  7. 编程的基本原则
  8. 函数参数初始化
  9. 测试题

数学中的函数:

(1) 存在表达式 y = f(x),其中x是自变量,y是x的函数。

(2) 当x的值确定时,y的值也随之确定。

函数的作用

简单来讲就是将重复的代码抽离成函数,实现代码的复用。其目的是实现高内聚低耦合的编程思想。

函数的声明方式

(1) 函数声明方式。

function test(参数){ //函数语句}。

(2) 函数表达式 / 函数字面量方式。

var test = function test1(){}

(3) 匿名函数表达式方式。

var test = function(){  
	//通过函数表达式声明时,如果后面一截没有函数名,是匿名函数 
}

(4) 函数表达式 / 字面量函数的特点:

  1. 因为函数名test1被忽略,只能内部访问,不能外部访问。
  2. 函数内部可自调用test1。
  3. 通过test.name可访问到被匿名的test1函数名。
  4. 过程理解: 把test1函数赋值给了test变量,在赋值的时候,会自动忽略函数名test1,所以外部调用不到。
var test = function test1(){
	test1(); //可自调用
}
test1(); //外部调用test1报错,未定义;
test(); //外部通过test变量调用函数;

形参和实参

(1) 形参: 就是变量/占位符, 形式参数; function(a, b){},a,b是形参;

(2) 实参: 就是给变量/占位符赋值, 实际参数。在函数内部可通过arguments实参列表来获取所有的实参。

function test() {
	console.info(arguments); //打印的是aa和bb的值
}
test(aa, bb);// 此处的数值 aa 和 bb是实参。

(3) 形参和实参的特点:
形参和实参的数量可以不等。

(4) 实参列表arguments:
arguments是函数的实参列表,是所有实参的集合,它是一个类数组。
可在函数内部引用和答应它的值。
arguments是 --> 在函数内部打印形参位数: test.length; //是形参的长度位数。

(5) 形参和实参长度的获取:
形参长度的通过函数名.length的方式获取。

function test (a, b, c) {
	console.info(test.length); //内部和尾部都可使用
}
console.info(test.length)
test();

实参长度的获取:arguments.length。实参的长度只能在函数内部获取。

function foo () {
	console.info(argument.length); //3
}
foo(2018, 2019, 2020); 

(6) 实参和形参值的修改:

  1. 实参和形参是一种映射关系,修改其中一个,另一个的值也发生改变。
  2. 函数内部可更改实参的值,可修改到arguments[i]。
  3. 只有已经传值的形参才能修改。如只传入了a,b两个实参,如果修改arguments[2],则修改无效。

如果传实参的时候arguments里没有这个值,在函数里面对形参b赋值,就是对undefined的变量赋值,所以结果还是undefined。因为未被定义。

(7) 形参和实参的区别:

  1. 一 一对应:如果实参列表中存在形参的参数,二者就会有一个映射的关系,此时函数内对形参赋值,才会改变实参的值。
  2. 形参存在栈内存中。而实参是数组,存在堆内存中。

函数的返回值

(1) return语句:每个函数最后一条语句都是return。如果没有添加,系统就会默认添加一条return语句,叫隐式添加。

(2) return语句的两个功能: 1、结束函数。 2、返回值。

函数式编程

(1) 将一个固定的功能段或程序段被封装, 实现一个固定的功能。

(2) 封装体需要一个入口和一个出口。 入口就是参数,出口就是返回值。

编程的基本原则:

高内聚,低耦合。

(1) 代码的耦合性:指的是代码中重复的代码过多,导致整个程序过于臃肿且难以维护。

(2) 高内聚的实现思路: 一个功能或模块内部的代码紧密联系度比较强,联系度强就能够让这个模块的独立性强。-- 我们希望一个模块能够独立地完成一个任务,而这个任务完成的好坏,是和高内聚有关系的。

(3) 低耦合的实现思路: 希望把重复的代码给提取出来,组成一个独立的模块功能体,去完成一个独立的功能。

(4) 高内聚低耦合的优点: 让一个模块有强的功能性和高的独立性,从而让模块具有更好的单一责任制的特性。

(5) 代码的解耦合:当程序中的重复代码过多时,就需要解耦合。在js中,解耦合最好的方式是抽离函数,将一些重复的功能代码抽象成函数,实现代码的精简和重复使用。

函数参数初始化

(1) 形参默认值 undefined:

参数的初始默认值是undefined。如果形参和实参中,如果其中一个是undefined,另一个为具体数值,就会取具体数值作为形参的值。

(2) es6给定默认值的写法:

function(a=1, b=2){} //es6给形参赋默认值

测试题:

用ES5实现ES6的参数默认值语法,赋值1和2:

写法1var a = arguments[0] || 1;	//企业里面一般都这么写。
var b = arguments[1] || 2。
写法2var a = typeof(arguments[0]) !== 'undefined' ? arguments[0] : 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值