day36
一、可选链和空集合并符
1.?
// ? 作用:1、三目运算符 2、可选链 const obj = { id: 1, // info: { // name: '张', // age: 18 // } } console.log(obj.id) console.log(obj.info?.name)
2.?? 空集合并符
amount 是别人传递过来的,如果别人没有传递过来一个具体的值,那么count就会变成undefined let amount = 20 let amount let count = amount ?? 1 console.log(count)
3.+加号作用
:1、加法运算 2、字符串拼接 3、数据类型转换 let num = Number(prompt('请输入一个数字?')) let num = +prompt('请输入一个数字?') console.log(num) console.log(+'10') console.log(-'10') console.log('10')
二、同源策略
+ 浏览器自身为了安全着想,做的访问的限定的规则,不允许你向别人的服务器发送请求,只能给自己发送 + 条件 => 不同源就属于为了同源策略 + 不同源 => 协议 => 域名 => 端口号 => 只有其中有一个不同,那么就说明你不同源
规则本身是好的,但是随着发展其实已经不能满足一些需求了,做的限定太多了,例如,百度收购一些小的公司,这些小的公司被收购属于这个大的公司,那么各个公司里面的资源应该可以共享,但是有同源策略的存在,导致不能共享。为了解决问题,有人提出了跨域方案,跨域就是各个服务器间可以相互访问,不受同源策略的限定。
三、jsonp(前端解决跨域的方案,原理是利于了script标记上面的src属性不受同源策略的影响)
<img src="https://img0.baidu.com/it/u=3568352712,1159928261&fm=253&fmt=auto&app=138&f=PNG?w=500&h=753"> <!-- 框架集标记,可以在一个网页里面嵌套另一个网页 --> <iframe src="https://www.baidu.com" width="700" height="500"></iframe> <!-- <script src="./js/ajax.js"></script> --> <script> // live server插件服务器地址:http://127.0.0.1:5500/ // 服务器请求地址:http://localhost:2402/jsonp/test // pAjax({url: 'http://localhost:2402/jsonp/test'}) // .then(res=>{ // console.log(res) // })
<script> // live server插件服务器地址:http://127.0.0.1:5500/ // 服务器请求地址:http://localhost:2402/jsonp/test // pAjax({url: 'http://localhost:2402/jsonp/test'}) // .then(res=>{ // console.log(res) // }) // jsonp前端解决跨域的方案,原理是利于了script标记上面的src属性不受同源策略的影响 // 注意点:jsonp只能发送get请求 function fn2(res){ console.log(res) } </script> <script src="http://localhost:2402/jsonp/test?callback=fn2"></script>
四、cors
CORS ( Cross-Origin Resource Share),跨域资源共享,有一系列 HTTP 响应头组成,这些请求头决定浏览器是否阻止前端 js 代码跨域获取资源。
浏览器的同源安全策略默认会组织网页“跨域”获取资源。但是如果接口服务器配置了 CORS 相关的 HTTP 响应头,就可以解除浏览器端跨域访问限制。
注意事项:
主要在服务器端设置HTTP响应头;
CORS 使用步骤
安装:
npm install cors
导入:
const cors = require('cors')
使用:
app.use(cors())
五、事件轮询
=> js单线程语言、出现异步代码机制
=> 调用栈,先进后出 => web api,专门用来分配异步任务的
=> 队列,先进先出(微任务、宏任务)
=> 执行一次宏任务,要清空微任务,所谓的轮询其实轮流访问宏任务和微任务
=> 遇到同步代码直接会执行调,如果是异步任务会交给web api