javascript-函数

普通函数

//函数声名
function fun(){
console.log("hello world")
}
//调用函数
fun();//hello world

带参数的函数

//函数声名
function add(a,b){
return a+b;
}
//调用函数
var result = add(1,2);
console.log(result);

回调函数和匿名函数

回调函数:将函数作为参数,传递给另一个函数
匿名函数:javascript没有命名的函数,仅调用一次,常用于回调函数

setTimeout(function(){
	console.log('hello world');
},500)
//0.5s后输出一次hello world

函数表达式

const add = function(a,b){
	return a+b;
}
let result = add(10,20);
console.log(result);//30

函数表达式和普通函数的区别在于,是否需要将声名提前
函数表达式必须提前声名函数

立即执行函数(不常用)

(function(){})()

立即执行函数:声明之后立刻执行的函数
以前常用于封装代码:

(function(){
    var a = 1;
    var b = 2;
    console.log(a + b)
})()

该函数输出a + b的结果,但是立即执行函数外部不能访问变量a和b,从而达到封装的目的。

闭包函数和闭包

闭包函数:声名在一个函数内的函数
闭包:内部函数总是可以访问其所在的外部函数中声名的参数和变量,即使在其外部函数被返回了之后。

例子1

(function(){
    function add(a, b){
        return a + b
    }
    let result = add(1, 2)
    console.log(result)
})()

立即函数内部的add函数就是闭包,闭包的特点是具有全局性,闭包内部的this关键字会指向全局对象window。

例子2

//闭包的特性:内部函数未执行完,外部函数即使执行完成,外部函数中的变量也不会被销毁
function fun1(){
	var n =1;
	var m =2;
	function fun2(){
		return n+m;
	}
	return fun2;
}
const f = fun1();//外部函数执行完毕
const result = f();
console.log(result);//3

箭头函数

//函数表达式
const addself = function(x){
	return x+x;
}
//箭头函数 ()=>{}
const addself= (x)=>{
	return x+x;
}
//更简
const addself = x=>x+x;

箭头函数中的this:使用function定义的函数,this取决于调用该函数的对象。使用箭头函数,this取决于函数定义的位置。

const cat = {
	name:"meow",
	sayName(){
	console.log(this.name)
	}
}
cat.sayName();//meow

const cat = {
	name:"meow",
	sayName(){
		setInterval(function(){
			console.log(this.name);
		},500)
	}
}
cat.sayName();//输出一系列空白,原因是,这里的this是setInterval的context 即window,而window.name并没有定义

const cat = {
	name:"meow",
	sayName(){
		setInterval(()=>{
		console.log(this.name);
	},500)
	}
}
cat.sayName();//输出一系列的meow,原因是,这里的this取决于定义的位置,即cat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值