一、变量提升(var)
for循环内变量
for(var i = 0 ;i < 10 ; i ++ ){
};
console.log(i);//i=10i变量提升并成功赋值,打印出来i值为10。
function内变量
function aa(){
var b=10;
}
console.log(b);//b is not definedfunction内b变量没有变量提升(作用域限制)。
if条件语句内变量
if(2<1){
var b = 10 ;
}
console.log(b);//undefinedb变量提升但未成功赋值,条件语句进不来,不执行赋值,仅仅变量提升。
为避免var声明产生的困扰,可以使用let声明
二、js写ajax
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let $ = { //声明变量$,内部含有get方法和ajax方法
get(url, success) {
this.ajax({ //调用本身ajax方法,传两个参数
url,
success
})
},
ajax({ type, url, async, success }) {//ajax传入对象,包含参数
let ajax = new XMLHttpRequest() //实例ajax请求
ajax.open(type || 'GET', url, async || true)//启动ajax,未传参数使用“||”后默认值
ajax.send() //发送请求
ajax.onreadystatechange = () => { // readyState有五种可取值0:尚未初始化,1:正在加载,2:加载完毕,3:正在处理;4:处理完毕。
if (ajax.readyState === 4) { //状态处理完毕,从服务器返回的响应数据
if (ajax.status === 200) { //200 请求成功。Http状态码含义:200 请求成功;202 请求被接受但处理未完成;400 错误请求;404 请求资源未找到;500 内部服务器错误;
success(JSON.parse(ajax.response))
}
}
}
}
}
$.get("/a.json", function (data) { //调用$的get方法,传入两个参数
console.log('打印', data); //打印返回数据data
})
</script>
</body>
</html//a.json
{
"name": "simba",
"age": 20
}