一,匿名函数
没有名字的函数就是匿名函数
function (){}
1)var f = function(){} 调用:f();
2)var con = document.getElementById('con');
con.onclick = function(){}
3)IIFE即时调用函数
普通函数是对象,即时调用函数其实是将普通函数降级生成的
降级方式:1)-function(){}()
2)+function(){}()
3)(function(){})()
匿名函数的好处:
变量封闭,私有保护,不对外开放,减少对全局变量的污染
二,异步和同步
1,json
组织形式:
var json = {
"key":"value",
"sex":"男"
}
増:
json.age = 23;
或
json["age"] = 23;
删:
delete json.sex;
delete json["sex"];
改:
json.age++;//让其自增一
json["age"] = 38;
查:
json.name;
json["name"];
json嵌套:
var j = {
"name":"=lisi",
"obj":{
"age":23,
"sex":"男"
}
}
j.obj.age;
j["obj"]["age"];
json遍历:
for in 遍历
for(var k in j){
//k:每一个键值对的键
//j[k]:每一个键值对的值
}
2,同步
从上到下依次执行,就是同步
程序中使用同步的地方很多,就是排队执行,上边没有执行完,下边必须等待
eg:
alert()
for语句
3,异步
当遇到耗时操作,系统不会等待,直接执行后边的语句
常见的异步:
setInterval
setTimeout
ajax Node.js
如果有异步语句就一定是异步操作
如果没有异步语句,那就不是异步操作
三,回调函数
一般用在异步中,当异步事情做完了,还想继续做点事,需要使用回调函数
四,闭包
变量: 作用域 全局变量和局部变量
直白的说:函数内部能调用外部的变量,函数外部不能调用函数内部的变量
函数:能形成作用域,函数内部声明的变量在外部不能调用
函数闭包:一个函数可以把他自己内部的语句和自己声明时所处的环境(作用域),一起封装成一个密闭的环境,称之为闭包
每一个函数都是闭包形态,都能够天生记忆自己的语句和自己声明时所处的环境,但是我们需要将这个闭包放在特殊地方才能更好的观察闭包
特殊的地方:当前作用域以外的地方
闭包其实就是让变量在不同作用域之间调用
闭包的性质:
1,闭包用于处理隐患,不是加以利用的性质
2,每一次调用闭包都是访问一个全新的闭包,都会访问闭包中的全部变量
网友评论