超文本传输协议
协议:双方或者多方共同遵守的约定
http协议:浏览器和web服务器之间建立的约定
**http请求**:请求头,请求行,请求体
请求资源:url
请求方式:get,post ,put ,delete,options
请求携带的数据:
header,url地址后面,请求体
## get和post请求的区别
get请求数据放到url地址后面(不安全,携带的数据量小),post请求放在请求体,安全(携带的数据量大)
**http回复** 响应的状态码+响应的文本(回复的内容)
**http响应状态码**,标识http有没有成功
100:请求未完成
200:请求成功
302:重定向(服务端解析请求后跳转到别的资源)
304:浏览中有缓存了(有利于提高网站的速度)
403:没有权限访问的资源
404:未找到服务器的资源
500:服务器出错了
**特点:**无状态,不会保持长连接,浏览器主动请求,服务才能回复
== 的隐式转换规则
1、有六种值转化为布尔值为false,其他都转化为true
undefined,null,false,0,NAN,"",''(空字符串,中间无空格)
console.log('0' == false);//true 字符串0先转换为数字0,而false转化为数据类型,false是0,true是1
console.log('' == false);//true js中空字符串与0相等,也就意味着空字符串等等于false
2、布尔值、数字、字符串三者比较之前先转化成数字
两者做判断时,若有布尔值,会先把布尔值转化成数据类型,即0或1
字符串直接转化成不二类型,除了空字串为false外,其他的都是true
字符串和数据类型作比较的时候,字符串会转化为数据类型
console.log(null == undefined); //true undefined衍生自null
3、对象的比较
对象的比较并非值的比较,即使两个对象包含相同的属性及相同的值,他们也是不相等的
各个索引元素完全相等的两个数组也不相等
var a = {
x: 1
}
var b = {
x: 1
}
console.log(a == b); //false
var c = []
var d = []
console.log(c == d);//false
因为地址不相等
对象的比较均是引用的比较:
当且仅当它们引用同一个基对象时,它们才相等
var a = []
var b = a
b[0] = 1
console.log(a == b); //true
空数组和布尔值有两种关系:当空数组作为判断条件时,相当于true。当空数组与布尔值直接比较时,相当于false。
因为当数组与布尔值进行比较时,是将==两边的先转成数据类型在进行比较,而空数组转换成数字0,false也转换成数字0所以相等
console.log(Number([])); //0
console.log([] == false);//true
数组转化为Number时: 1.空的[]转为0
2.有两个或以上元素的数组转为NaN
3.只有一个元素时,根据该元素进行Nunber转换
对象转化为Number时:
先转化为Number进行计较:所有的对象转为Number时都为NaN