匿名函数和闭包
Posted qianqian-it
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了匿名函数和闭包相关的知识,希望对你有一定的参考价值。
回顾一下
基本类型
五大基本类型:
String Number Boolean Null undefined //占有固定的内存大小,如数值型占八个字节,布尔类型占一个字节,他们的值保存在栈空间,
三大引用类型
数组(array) 对象(Object) 函数(function)//引用类型占用空间内存不确定,但内存地址大小是固定的,存储的实际上是数据的内存地址
函数作为参数的几种方式
1.函数作为另一个函数的参数
2 有参函数函数作为参数
<script >
//第一种函数作为另一个函数的参数
function f(){
alert("我是作为参数的函数")
}
function s(a){//此处啊作为形参,可以是任意值
a();
}
s(f);
//第二种函数作为另一个函数的参数
function people(){
return 100
}
function sum(x,y){
alert(x+y())
}
sum(10,people)
//有参函数作为函数参数
function fun(a){
return a*a;
}
function ss(x,z){
alert(x+z(x))
}
ss(100,fun)
</script>
函数的内部属性
1 arguments 本质上相当于一个集合,表示函数参数的一个集合
2 使用arguments.length检测函数参数个数
<script >
function sum(){
alert(arguments.length)//检测参数个数
result=0;
for(var i=0;i<arguments.length;i++){
result+=arguments[i]
}
return result;
}//求参数和
alert(sum(1,2))
alert(sum(1,2,3,4));
</script>
一 匿名函数
定义:没有函数名字的函数
1.单独的匿名函数是无法运行和调用的
2. 可以把匿名函数赋值给变量
3. 通过(匿名函数)()来执行
4. 匿名函数传递参数(匿名函数)(参数)
接下来看一些小例子
<script >
<!-- //普通函数 -->
function people(){
alert("我是一个好人")
}
people()
// //把参数赋值给一个变量
var str=function(){
alert("把函数赋值给一个变量")
}
alert(str) //弹出函数体本身
str() //弹出结果
// 匿名函数
(function() {
alert("你是一个坏人")
})()
//带参数的匿名函数
(function(m,n) {
alert(m+n)
})(100,200)
</script>
二 闭包
定义:闭包是指可以访问另一个函数作用域中的变量
在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁
常见方式
闭包的常见方式就是在一个函数中创建里另一个函数
作用:通过闭包可以访问局部变量
可以让局部变量始终保持在内存中
以上是关于匿名函数和闭包的主要内容,如果未能解决你的问题,请参考以下文章