超文本传输协议


协议:双方或者多方共同遵守的约定


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