- 全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?
var a = 1
console.log(window.a) // 1
let aa = 123
const bb = 456
console.log(window.aa) // undefined
console.log(window.bb) // undefined
b和c到底在哪里呢?
由图可见,用 let 和 const 声明的全局变量并没有在全局对象中,只是一个块级作用域(Script)中, 获取方式就是在定义的块级作用域中直接获取
-
cookie 和 token 都存放在 header 中,为什么不会劫持 token?
- 首先token不是防止XSS的,而是为了防止CSRF的;
- CSRF攻击的原因是浏览器会自动带上cookie,而浏览器不会自动带上token
(CSRF中文全称是叫跨站请求伪造。一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。)
cookie 举例:服务员看你的身份证,给你一个编号,以后,进行任何操作,都出示编号后服务员去看查你是谁。
token 举例:直接给服务员看自己身份证
-
下面代码中 a 在什么情况下会打印 1?
var a = ?;
if(a == 1 && a == 2 && a == 3){
conso.log(1);
}
这到题主要考的是 == 的隐式转换
var a = {
i: 1,
toString() {
return a.i++
}
}
打印结果确实如此。
今天是台风天,外面风大雨大,窝在家里吃吃零食,打打游戏,看看书,巴适