1-get和post
的区别
它们都是http请求,其中get适合数据量小,对于安全要求性不高的场景;
post请求适合数据量大,对数据传输安全性高的场景。
get请求中数据直接以明文形式存在于url中,post请求数据在请求头的body中。
所以post请求相比于get请求更安全,可以传输的数据量也大。
get请求一般用于请求资源,一般返回的响应会被缓存,提高访问速度;
而post请求返回的响应一般不被允许缓存,除非设置了http头,但是因为post请求是提交表单或者修改数据使用,所以其实也不适合缓存。
2-cookie
是存储在客户端吗
是的,cookie存储最大每个域名下4KB,服务器端在HTTP响应头包含SET-COOKIE标头,客户端将服务器端响应回来的cookie保存在客户端,因为是存储于客户端,是直接setget形式存储,明文形式,所以需要注意安全性问题。
3-语义化标签section
section一般包含自己的标题、子标题、内容;用于分段;
<section>元素用于组织顶层结构内容,通常是主题、内容板块;
<article>元素通常用于一篇独立的文章或者内容单元,比如博客、新闻、帖子等。
4-obj1==obj2
使用==或者===
比较两个对象,比较的是对象的内存地址
5-对象扁平化
function solution(arr, prefix = "") {
const res = {}
//forEach,obj可以用吗?不可以
for (const key in arr) {
const keyName = prefix ? prefix + "." + key : key + ""
const value = arr[key]
if (typeof value == "object" && value !== null)
Object.assign(res, solution(value, keyName))
else
res[keyName] = value
}
return res
}
6-字符串中提取数字
function checked(str1, str2) {
const range1 = str1.split(",")
//字符串使用slice截取,没有splice方法,从下标1截取到末尾range1[0]?.slice(1)
// console.log(typeof range1[0])//string
// console.log(parseInt(range1[0]))//NAN
const head1 = range1[0]?.slice(1)
const tail1 = range1[1]?.slice(0, range1[0].length - 1)
//第二个参数都可能不存在,代表正无穷,不存在的话应该得到的是null吧,得到的是空格字符串
const range2 = str2.split(",")
const head2 = range2[0]?.slice(1)
const tail2 = range2[1]?.slice(0, range2[0].length - 1)
//区间连续不是交叉
console.log(head1, tail1, head2, tail2)
return head2 == tail1 + 1 || head1 == tail2 + 1
// console.log(range1, "ok", range2)
}
console.log(checked("[1,3)", "[2,3)"))