Skip to content
On this page

function 数据类型

函数数据类型也要按照引用地址来操作的

函数:具备一定功能的方法

javascript
// => 创建函数:
function 函数名(){
	//=> 函数体:实现某一个功能的具体JS代码
}
// => 执行函数:相当于使用洗衣机洗衣服(如果函数只创建了,但是没有去执行,函数没有任何的意义)
// 函数名()
1
2
3
4
5
6
javascript
function fn(){
	console.log(1+1);
}
fn; // => 输出函数本身
fn(); // => 把函数执行(吧函数体重实现功能的代码执行)
1
2
3
4
5

image.png

形参:形式参数(变量),函数的入口
当我们创建一个函数想要实现个功能的时候,发现有一些材料不清楚,只有当函数运行的时候,别人传递给我,我才知道,此时我们就需要设定入口,让用户执行的时候通过入口把值把我们

javascript
function fn(num1,num2){
	console.log(num1+num2)
}
// 实参:函数执行传递给函数的具体值就是实参
fn(1,2);
fn(10,20);
1
2
3
4
5
6

函数中形参和实参

  • 形参:相当于生成洗衣机的时候提供的入口,需要用户执行函数的时候把需要的值传递进来,形参是个变量,用来春初和接口那些值
  • 实参:用户执行的时候传递给形参的具体指
javascript
// 随便求出两个数的和

function sum(num1,num2){ //num1/num2就是形参变量(类似于var了一下)
		var total = num1 + num2;
    total*=10;
    total=total.toFixed(2);
		console.log(total);
}

sum(10,20);//10/20是实参  num1=10 num2=20
sum(10); // num1=10 num2=undefined 定义了形参但是执行的时候,没有传递实参,默认实参就是undefined
1
2
3
4
5
6
7
8
9
10
11

arguments 实参集合

当我们不知道用户具体要传递几个值的时候(传递几个值都行),此时我们无法设置形参的个数:遇到此类需要,需要使用函数内置的实参集合:arguments

  • argument 只有函数才有
  • 不管执行函数的时候是否传递实参,arguments 天生就纯在,没有传递实参 ARG 是个空的集合传递了 ARG 中包含了所有传递的实参值
  • 不管是否设置了形参,ARG 中始终存储了所有的实参信息
javascript
function sum(){
	console.log(arguments)
}
sum(10,20,'wjh',{name:'wjw'});
1
2
3
4

image.png

  • arguments 是个类数组集合
    • 以数字作为索引(属性名),从 0 开始
    • arguments[0] 第一个实参信息
    • arguments[2] 第三个实参信息
    • arguments[n] 第 n+1 个实参信息
  • 有一个 length 的属性,存储的是当前几个的长度(当前传递实参的个数)
    • arguments.length
    • arguments['length']
    • arguments.calle 存储的是当前函数本身
    • arguments.calle.caller 存储的是当前函数只在哪执行的(宿主函数),在全局作用域下执行的,结果是 null
javascript
function sum(){
	console.log(arguments.callee.caller);//f
}
function fn(){
	sum(10,20,'wjh',{name:'wjw'});
}
fn();
1
2
3
4
5
6
7

// arguments.call 或者 arguments.call.caller 一般真正项目中很少使用,因为是在严格 js 模式下不允许我们直接使用这两个属性,然而现有项目大部分都是基于严格模式来的

javascript
// 任意数求和

function sum(){
	var total = null;
  for(var i =0;i<arguments.length;i++){
  	var cur = Number(arguments[i]);
    !isNaN(cur)?total += cur : null
  }
  consloe.log(total);
  return total;
  // return 后面跟着的都是值(返回的都是值):此处不少TOTAL变量返回,而是吧total存储到值返回而已
  // return 60;
}
sum(10,20,20);
sum();
sum(10,20,30,'wjw')
// console.log(total);
//=>Uncaught ReferenceError: total is not defined 闭包的保护机制导致作用域会保护里面的私有变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

JS 中的返回值 return

返回值是函数提供的一个出口:我们如果想在外面使用函数私有的一些信息,那么就需要通过 return,把这些信息返回出来供外面使用

sum: 代表的是函数本身
sum() 让函数先执行,代表的是当前函数返回的结果 (return) 后面是啥,相当于函数返回的是啥

javascript
function sum(){
		var total = 0;
    renturn
}
console.log(sum());
// 如果函数中没有return或者return后面啥也没有,默认返回的结果是undefined
1
2
3
4
5
6
javascript
function sum(){
		var total = 0;
    renturn;
    console.log(sum());
  	// 函数体重遇到return后,return后面的代码都不在执行了
}
1
2
3
4
5
6

JS 中匿名函数

没有名字的函数

  • 函数表达式
  • 自执行函数
javascript
oBox.onclick = function(){
	// 把一个码云名字的函数(有名字的也无所谓)作为值赋值给一个变量或者一个元素的某一个事件等,函数表达式

}
1
2
3
4
javascript
(function(n){
	// 创建函数和执行函数放在一起,穿件完成立马之执行:自执行函数
  // n 形参 n=10
})(10)

// 以下都是自执行函数,符号只有控制语法规范
~function(){}(10)
-function(){}(10)
+function(){}(10)
!function(){}(10)
1
2
3
4
5
6
7
8
9
10
沪ICP备20006251号-1