2021-08-01

JavaScript中的Function类型

1、Function

Function是一个用来构建函数的类(构造函数)。

(1)、构建方法:

<script>

 //创建函数

 //1、普通方式

 function fn1(n){

  console.log(n);

 }

 fn1(10);

 //2、使用变量初始化函数

 var fn2=function (n){

  console.log(n);

 }

 fn2(100);

 

 //3、new创建

 var fn3=new Function();//构建了一个函数对象犯fn3

 fn3=function (n1,n2){

 console.log(n1+n2);

 }

 fn3(10,20);

 

image-20210801161045138

(2)函数传参

//传参可以是变量n、对象obj、数组arr、表达式、函数等

 function person(obj){ /*传入的参数是对象*/

  return obj.name+","+obj.sex;

 }

 console.log(person({name:"张三",sex:"男",age:18}));

 
function person(obj,info="是一位好学生!"){//这里设置了info参数的默认值

 return  obj.name+","+obj.sex+","+info;

}

console.log(person({name:"张三",sex:"男",age:18}));

console.log(person({name:"张三",sex:"男",age:18},"学习不错!"));//这里输入了新的参数值“学习不错!,将代替默认值。

//形参为函数

 function box(sumFunction,num){

  return sumFunction(num);

 }

 

 function sumFunction(num){

  return num+10;

 }

 

 var result=box(sumFunction,10);//传递函数到另外一个函数中

 console.log(result);

image-20210801161233718

2、函数内部属性argument

在函数内部,有两个特殊的对象:argument和this。

argument是一个类数组对象,包含着传入函数中的所有参数,主要用途的保存函数参数。这个对象有一个callee属性,是一个指针,指向拥有这个argument对象的函数。即通过argument.callee调用函数自身,一般用于函数的递归调用。

<script>

 //需求:求3!

 function fact(n){

if (n==1){

 return 1;

}

else {

 return n*fact(n-1);

}

 }

 console.log(fact(3));

 //使用argument.callee

 function fact(n){

  if (n==1){

   return 1;

  }

  else {

   return n*arguments.callee(n-1);

  }

 }

 

 console.log(fact(3));

 

</script>

 

当实际开发代码规模较大时,使用argument.Callee可以有减少函数名的书写,最重要的是方法名修改比较方便,只需修改定义时的名称就行,有利于维护。

3、this指针对象。

在全局中this指向的是window(在JS中没有global这个全局对象,而JS的全局对象是window);

在函数中this指向的这个函数执行所操作的当前对象。

<script>

 var x=100;

 y="abc";//等价于window.y="abc";

 

 console.log(x,y);

 console.log(this.y);//这里的this代表的是window

 

//函数中this指向的这个函数执行所操作的当前对象

 var name="李四";//window.name="李四“

 var obj={

  name:"张三",

  age:16,

  fn:function (){

   console.log(this.name+this.age);//this指向当前执行这个函数的对象。

  }

 }

 console.log(this.name);//这个this没有在obj中,指向window的“李四”。

 obj.fn();

 

</script>

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值