笔记

75 阅读5分钟

1:CSS3有哪些新属性

  • border-radius:圆角边框
  • box-shadow:盒子阴影
  • background-size:背景图片大小
  • transition:过渡
  • transform:转换(位移 旋转 缩放)
  • animation:动画
  • linear-gradient:线性渐变
  • box-sizing:css3 盒子模型

2:git的核心概念有哪些?

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。分为工作区,通过git add . 提交到暂存区 git commit -m"备注"到本地仓库 git push到远程仓库

3:git 中与分支相关的操作有哪些?

  • 创建分支命令:git branch (branchname)
  • 切换分支命令:git checkout (branchname)
  • 合并分支命令:git merge
  • 查看分支命令:git branch
  • 删除分支命令:git branch -d (branchname)

4:标准盒模型和IE 怪异盒模型有什么区别?

  • 盒子模型组成有 4 部分,分别为:内容 内边距 外边距(一般不计入盒子实际宽度) 边框
  • 盒子模型有 2 种:标准盒子模型与怪异盒子模型
  • 标准盒子模型=content(内容)+border(边框)+padding(内边距)
  • 怪异盒子模型=content(内容)(已经包含了 padding 和 border)
  • css3 种可以通过设置 box-sizing 属性来完成标准或许怪异盒子模型之间的切换,怪异盒子模型:box-sizing: border-box;标准盒子模型:box-sizing:content-box

5:event loop事件循环如何理解?

所有同步任务在主线程上执行,形成一个执行栈---->主线程之外还有任务队列,当异步任务执行有结果的时候就会在任务队列放置一个事件------>当执行栈中的同步任务执行完毕,就会读取任务队列中的事件,将其对应的异步任务放入执行栈执行,这个不断循环往复的过程,就称为事件循环,也就是event loop,异步任务执行时候,先执行微任务,后执行宏任务

6:数组方法有哪些(写出几个 es5 的方法)什么意思?

  • 遍历方法

    • map : 映射数组,得到一个映射之后的新数组
    • filter:筛选数组
    • forEach:遍历数组
    • some:判断数组是否有元素满足条件(相当于逻辑或:一真则真,全假为假)
    • every:判断数组是否所有满足都满足条件(相当于逻辑与:一假则假,全真为真)
    • findIndex:查找元素下标,一般用于元素是引用类型
    • reduce:给数组每一个元素执行一次回调,一般用于数组元素求和(也可以求最大值、最小值)
  • 增删改查方法

    • push() : 末尾新增元素,返回值是新数组长度
    • unshift():开头新增元素,返回值是新数组长度
    • pop() :末尾删除元素,返回值是删除的那个末尾元素
    • shift(): 开头删除元素,返回值是开头的那个末尾元素
    • splice() : 删除指定下标元素,第三个参数是一个剩余参数,可以在删除的元素后面插入元素
  • 其他方法

    • reverse:翻转数组,会修改数组自身
    • sort: 数组排序,会修改数组自身
    • json: 拼接数组元素,返回值是拼接之后的字符串
    • slice: 根据下标范围查询数组元素,返回值是查询后的新数组
    • indexOf: 查询元素下标,一般用于元素是值类型

7:扩展运算符与 rest 剩余参数什么意思,应用场景?

扩展运算符用三个点号表示(...),用来:

  • 在 函数调用 / 数组构造 时,将 数组表达式 或者 string 在语法层面展开;
  • 在 构造字面量对象 时,将对象表达式按 key-value 的方式展开。

剩余运算符也是用三个点号表示(...),与扩展运算符相反,剩余运算符用来:将逗号隔开的值序列组合成一个数组或对象。当用...rest获取函数参数列表时,后面不能根形参,否则会报错

8:es6新增数据结构 Set,Map 代表什么意思?利用其中一种实现数组去重?

Set数据结构是ES6新增的数据结构,是一个类似于数组的数据结构,按照索引排列 Set 的特点 不接受重复数据

案例: 数组去重 利用Set不接受重复数据的特点封装函数给数组去重

function unique (arr) {
  return Array.from(new Set(arr))
}
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
console.log(unique(arr))

9:说下你理解的 Promise?用 promise 封装一个网络请求,核心代码?

Promise 是异步编程的一种解决方案,它是一个对象,可以获取异步操作的消息,他的出现大大改善了异步编程的困境,避免了地狱回调,它比传统的解决方案回调函数和事件更合理和更强大。

所谓 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

promise 的三种状态改变

  1. pending 变为 resolved
  2. pending 变为 rejected
  3. 只有这两种 且一个 promise 对象只能改变一次无论成功还是失败,都会有个结果

核心代码

const promise = new Promise(function (resolve, reject) {})

10:说一下es6的导入导出如何使用?

在ES6中每一个模块即是一个文件,在文件中定义的变量,函数,对象在外部是无法获取的。如果你希望外部可以读取模块当中的内容,就必须使用export来对其进行暴露(输出)。先来看个例子,来对一个变量进行模块化。我们先来创建一个test.js文件,来对这一个变量进行输出:

export let myName = "Jon";

然后可以创建一个index.js文件,以import的形式将这个变量进行引入:

import { myName } from "./test.js";
console.log(myName); //Jon