JavaScript函数及call、apply、bind简单介绍

本文介绍了JavaScript中的函数定义,包括函数声明语句、函数表达式、Function构造函数、函数提升和自调用函数。接着讲解了函数调用的不同模式,如函数调用、方法调用、构造函数调用和间接调用(call、apply、bind)。最后,文章讨论了函数参数和arguments对象,以及如何为函数参数设置默认值。通过对call、apply和bind的详细解释,帮助读者理解如何改变函数内部的this指向。
摘要由CSDN通过智能技术生成

JavaScript函数

一、函数的定义

JS中函数的特点:

  • 一处定义,处处使用
  • 将函数定义在对象内部称为对象的方法
  • 函数也是一个对象,可以设置属性与方法
  • 每一次调用函数会产生一个this,谁调用的函数this就指向谁
  • 在函数中创建的变量为局部变量,在函数调用时声明,在函数调用结束后删除,且只能在函数内部使用,因此可以在不同函数中定义相同名称的变量
  • 可以多次调用一个函数为其传递不同参数获得不同结果
  • 函数可以用在表达式、计算式等其他地方,都可以得到相应的结果
1、函数声明语句

function name (参数){要执行的代码}

function fun1(){
   }//用函数声明语句定义一个函数
  • 函数不会执行,只有当调用时才会执行
  • 可以不带参数也可以没有返回值,甚至可以没有函数名
function fun1(){
   
	console.log('a');//未调用,不执行
}
function fun2(){
   
	console.log('b');
	return 'c';
}
console.log(fun2());//b c
//箭头函数或匿名函数可以不用写函数名
(()=>{
   
	console.log('d');
})()//d
2、函数表达式

var fun = function(参数){要执行的代码};

var fun = function(){
   }
  • 通过函数表达式创建的函数是一个匿名函数,存储于变量中
  • 函数调用时用:变量名()
var fun = function(){
   
	console.log(1);
};
fun();//1
3、Function构造函数

var name = new Function(“参数”, “要执行的代码”);

var fun = new Function("name","return 3");
console.log(fun());//3
  • 参数和代码的引号不能掉
  • 调用时通过:name()
  • 通过构造函数方式定义的函数不能进行递归
4、函数提升

当函数调用在前,定义在后时,就会产生函数提升,函数的提升是直接将整个函数整体提升到作用域的最开始位置,提升后的位置是在变量提升后的位置之后的,

类型 提升情况
变量 将变量定义提升到作用域最开始位置,并且只提升定义不提升赋值,但是变量先提升
函数 将函数整个提升到作用域最开始位置,相当于剪切复制
function foo() {
   
  console.log(a);//a(){}
  var a = 1;
  console.log(a);//1
  function a() {
   }
  console.log(a);//1
}
foo();

注意

  • 只有使用关键字声明的函数和变量才会提升
  • 局部变量中的隐式全局变量不会提升
5、自调用函数

在声明函数的同时,对函数进行调用:
( function(){} )()
必须将函数用括号包裹再跟一个调用的括号才可以进行自调用

(function 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值