js面试题 (一)

69 阅读2分钟

js面试题,每日一背

一、请描述一下 cookies,sessionStorage 和 localStorage 的区别?

cookies 和 storage的区别?

  1. 出现时间
    • cookie: 有 JS 的时候就存在了
    • storage: H5 出现以后才有
  2. 存储大小
    • cookie: 4k 左右
    • storage: 20M 左右
  3. 前后端交互
    • cookie: 会跟随页面的请求自动携带
    • storage: 不会跟随请求自动携带
  4. 过期时间
    • cookie: 默认是会话级别, 可以手动设置过期时间
    • storage: 不能手动设置
  5. 前后端操作
    • cookie: 前后端语言都能操作
    • storage: 只能由 JS 操作

localStorage 和 sessionStorage 区别

    1. 过期时间
    • local: 永久存储, 除非手动删除
    • session: 临时存储
    1. 跨页面通讯
    • local: 直接跨页面通讯
    • session: 只能是当前窗口(页面) 跳转的页面才能通讯
    1. 共同点:只能存储字符串, 不能存储复杂数据类型

二、说说你对作用域链的理解

  • 作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到 window 对象即被终止,作用域链向下访问变量是不被允许的
  • 简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期

三、上一题的延申: 那你再描述一下 JS 的原型链是什么?

  • 每个对象都会在其内部初始化一个属性,就是proto,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去proto里找这个属性,这个proto又会有自己的proto,于是就这样一直找下去,一直找到最顶层(Object)为止,也就是我们平时所说的原型链的概念。
    • object 的 __proto__ 为 null