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

一些前端基础问题

作者: 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,跨站请求伪造

相关文章

  • 小猿圈分享2019年前端JavaScript面试题(三)

    上篇文章小猿圈前端讲师为你分享了前端面试中js遇到的一些基础问题,接下来给大家讲解的就是前端基础和理论问题都有哪些...

  • 小猿圈分享2019年前端JavaScript面试题(三)

    上篇文章小猿圈前端讲师为你分享了前端面试中js遇到的一些基础问题,接下来给大家讲解的就是前端基础和理论问题都有哪些...

  • 一些前端基础问题

    typeof出来的类型number, string, boolean, object, function, und...

  • 前端-一些基础问题

    1.实现一个函数,判断输入是不是回文字符串;注:回文字符串:是一个正读和反读都一样的字符串,比如“level”或者...

  • 前端基础问题

    网页乱码的问题是如何产生的?怎样解决 网页乱码主要是因为浏览器对HTML网页的编码解释错误,HTML文件保存的编码...

  • 常见的一些前端基础问题

    Doctype作用?标准模式与兼容模式各有什么区别? (1)声明位于位于HTML文档中的第一行,处于 标签之前。...

  • 前端新人写简历的大概套路

    web前端零基础课的,一些同学,他们不是前端开发出来的是中途、半路转行的, 所以他们的简历,就是问题各种比较多。 ...

  • 你确定要零基础开始学 Web 前端开发?

    现在web前端开发是一个很火很热门的行业,在这里为大家详细讲解一下这个方面的一些基础问题! Web前端开发技术主要...

  • Sass的学习(二)

    很长时间没有去写一些简单的前端JS之类的甚至是基础的SQL部分,这次找工作的时候说实话碰到了很多基础方面的问题。 ...

  • Sass的学习(一)

    很长时间没有去写一些简单的前端JS之类的甚至是基础的SQL部分,这次找工作的时候说实话碰到了很多基础方面的问题。 ...

网友评论

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

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