函数名与闭包
// 普通函数 命名函数
function fun(){
console.log('1')
}
// 表达式函数
var fun = function(){
}
// 事件函数
document.onclick = function(){
}
// 构造函数
function Pon(name){
this.name = name
}
new Pon()
// 匿名函数
function (){}
闭包
闭包: 函数套函数 内部函数可以访问外部函数的变量
本质: 内部函数和外部函数的桥梁
作用:闭包中使用的变量会一直存储在内存中,类似全局变量 ,避免全局污染,可以解决全局变量的问题。
function sum(){
var a = 9;
return function(){
console.log(a++)
}
}
var f = sum(); // f = function(){ console.log(a++)}
f(); // 9
f(); //10
f(); //11
ajax
Asynchronous Javascript And XML:简称ajax
async异步 JavaScript 和 XML
是指一种创建交互式网页应用的网页开发技术,可以用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,
AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
数据交互时的数据形式:XML json
异步:客户端与服务器请求数据的过程中,可以做其他的事情
同步:客户端与服务器请求数据的过程中,不能做其他的事情
//1.创建请求
var ajax = new XMLHttpRequest() ;
//2.设置请求方式 open(method,url,async) true false
// method : get post
//url 请求地址
// async 同步或者异步 默认异步
ajax.open('get','./wenben.txt',true)
//post请求一定要添加请求头才行,不然会报错
ajax.open('post','./wenben.txt')
ajax.setRequestHeader('Content-type','application/x-www-form-urlencoded;utf-8')
//3 发送
//get
ajax.send()
//post
ajax.send('name=boy')
//http
/* 200 ok
404
30* 重定向
50* 服务器问题*/
/* 0:创建了对象
1:建立连接
2:发送了请求
3:接收到了这个请求,并且已经开始处理,没有处理完成
4:已经处理完成,并且返回了响应包
1XX系列:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx
状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。
2XX系列:代表请求已成功被服务器接收、理解、并接受。这系列中最常见的有200、201状态码。
3XX系列:代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的
Location 域中指明。这系列中最常见的有301、302状态码。
4XX系列:表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。常见有:401、404状态码。
5XX系列:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理
。常见有500、503状态码。*/
//4.请求监听
ajax.onreadystatechange = function(){
if(ajax.readyState == 4){
if(ajax.status == 200){
console.log(ajax.response)
}
}
// console.log(ajax.status)
// console.log(ajax.readyState)
// if(ajax.status)
// console.log(ajax.response)
}
eval的作用是计算某个字符串,并且执行其中的JavaScript代码
1.js哪些操作会造成内存泄露?
1)意外的全局变量引起的内存泄露
2)被遗忘的定时器或者回调
3)闭包引起的内存泄漏