js面试题,每日一背
一、请描述一下 cookies,sessionStorage 和 localStorage 的区别?
cookies 和 storage的区别?
- 出现时间
- cookie: 有 JS 的时候就存在了
- storage: H5 出现以后才有
- 存储大小
- cookie: 4k 左右
- storage: 20M 左右
- 前后端交互
- cookie: 会跟随页面的请求自动携带
- storage: 不会跟随请求自动携带
- 过期时间
- cookie: 默认是会话级别, 可以手动设置过期时间
- storage: 不能手动设置
- 前后端操作
- cookie: 前后端语言都能操作
- storage: 只能由 JS 操作
localStorage 和 sessionStorage 区别
-
- 过期时间
- local: 永久存储, 除非手动删除
- session: 临时存储
-
- 跨页面通讯
- local: 直接跨页面通讯
- session: 只能是当前窗口(页面) 跳转的页面才能通讯
-
- 共同点:只能存储字符串, 不能存储复杂数据类型
二、说说你对作用域链的理解
- 作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到 window 对象即被终止,作用域链向下访问变量是不被允许的
- 简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期
三、上一题的延申: 那你再描述一下 JS 的原型链是什么?
- 每个对象都会在其内部初始化一个属性,就是
proto,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去proto里找这个属性,这个proto又会有自己的proto,于是就这样一直找下去,一直找到最顶层(Object)为止,也就是我们平时所说的原型链的概念。object 的 __proto__ 为 null