美文网首页
一些前端基础问题

一些前端基础问题

作者: NukeLuke | 来源:发表于2017-12-06 23:36 被阅读0次
    1. typeof出来的类型
      • number, string, boolean, object, function, undefined
    2. 隐式类型转换的情形
      • 加减乘除号,+ - * /
        • +号用作数字相加时,累加数字,1 + true = 2
        • +号用作字符串连接时,把其他非字符串转为字符串
        • null会转换为0,undefined转换为NaN
        • NaN不等于NaN,这是由浮点数的精度决定的
      • isNaN
        • isNaN()判断NaN不可靠,因为会存在隐式转换
          • isNaN('foo' || undefined || {} || {age: 'foo'}) // 都为true
          • 使用 x !== x 来判断是否为NaN
          • 或者使用ES6的Number.isNaN(要检验的值)
      • 真值运算,if && ||
        • false, 0, -0, “”, NaN, null, undefined,会转换为false
        • 有一个可以具有默认值得可选参数的函数会让真值判断失效
          • function point(x, y) { if (!x) { x = 320; } if (!y) { y = 240; } return { x: x, y: y }; }
        • 检测undefined的更加准确的方法是用typeof操作,可以区分开0和undefined
          • function point(x, y) { if (typeof x === "undefined") { x = 320; } if (typeof y === "undefined") { y = 240; } return { x: x, y: y }; }
        • 或者 if (x === undefined) { ... },利用参数与undefined作比较
    3. call, apply, bind
      • call的第一个参数是要绑定this的对象,第二个参数开始是原有函数中的参数
      • apply第一个参数同call,后面的参数传数组
      • bind是在函数本身后面加要bind的对象,并且要使用表达式函数,而不是声明式函数
    4. 作用域
      • 作用域链:当前作用域找不到,就去父级找
      • 函数作用域是定义时候产生的,不是执行时候产生的
    5. 闭包
      • 函数作为返回值
      • 函数作为参数传递
      • 产生作用域链
    6. 前端使用异步的场景
      • 定时任务
      • 网络请求
      • 事件绑定
    7. 跨域
      • 浏览器有同源策略,不允许ajax访问其他域的接口
        • 协议、域名、端口,有一个不同就算跨域
      • 可跨域的三个标签
        • img的src
        • link 、script 使用CDN
        • script用于JSONP
      • JSONP
      • 服务器端设置http header
    8. cookie, sessionStorage, localStorage的区别
      • cookie
        • 用于客户端和服务器端通讯
        • 存储量只有4KB
        • 所有http请求都带着,会影响获取资源的效率
        • API简单,需要封装才能使用 document.cookie
      • sessionStorage,localStorage
        • 最大5M
        • 不用在请求中带着
        • setItem(key, value), geiItem(key)
        • iOS safari隐藏模式下,localStorage.getItem会报错,,简易使用try catch封装
      • 区别
        • 容量
        • 是否携带到ajax中
        • API易用性
    9. 模块化
      • 需要异步加载JS,使用AMD
      • 使用npm之后建议使用CommonJS
    10. 渲染页面的过程
      • 加载资源的形式
        • 输入URL或跳转页面加载html
        • 加载html中的静态资源
      • 输入URL到得到html的过程(加载一个资源的过程)
        • 浏览器根据DNS服务器得到域名的IP地址
        • 向这个IP的机器发送http请求
        • 服务器收到、处理并返回http请求
        • 浏览器得到返回内容
      • 浏览器渲染页面的过程
        • 根据html结构生成DOM Tree
        • 根据CSS生成样式(CSSOM)
        • 将DOM和CSSOM整合成RenderTree
        • 根据RenderTree开始渲染和展示
        • 遇到script标签时,会执行并阻塞渲染
    11. window.onload和document.DOMContentLoaded
      • 前者是全部资源加载完才执行,包括图片视频
      • 后者是DOM渲染完即可执行,无需照顾图片视频
    12. 性能优化
      • 原则
        • 多使用内存、缓存或其他方法
        • 减少CPU计算,减少网络请求
      • 从哪入手
        • 加载页面和静态资源速度
          • 静态资源的压缩合并,把加载或请求数量减少
          • 静态资源缓存
          • 使用CDN让资源加载更快
            • CDN是不同区域的网络优化,就近加载
          • 使用SSR(后端渲染),数据直接输出到html中
      • 页面渲染速度
        • CSS放在前,JS放在后
        • 懒加载
        • 减少DOM查询,对DOM查询做缓存
        • 减少DOM操作,多个操作尽量合并在一起执行
        • 事件节流
        • 尽早执行操作,如DOMContentLoaded
    13. 安全性
      • XSS,跨站请求攻击
      • XSRF,跨站请求伪造

    相关文章

      网友评论

          本文标题:一些前端基础问题

          本文链接:https://www.haomeiwen.com/subject/fmsrixtx.html