一.简答题:
- 1.CSS3有哪些新属性?
- 2.git的核心概念有哪些?
- 3.git中与分支相关的操作有哪些?
- 4.标准盒模型和怪异和模型有什么区别?
- 5.event loop 事件循环如何理解?
- 6.数组方法有哪些?
- 7.扩展运算符与rest 剩余参数什么意思,应用场景?
- 8.es6新增数据结构Set,Map 代表什么意思?利用期中一种实现数组去重?
- 9.说下你理解的Promise?用Promise封装一个网络请求,核心代码?
- 10.说一下es6的导入导出如何使用
1.css3新增特性:
- css3边框如 border-radius,box-shadow等;
- css3 背景如 background-size,background-origin 等
- css3 2D 3D 转换如 transform等
- css3 动画如 animation 等
- box-sizing :border-box /content-box
2.git的核心概念有哪些?
图例展示:
3.git中与分支相关的操作有哪些?
本地仓库
mkdir mytest #make directory 创建目录
cd mytest #change directory 切换目录
cd .. #回到上一目录
git init #初始化git,生成文件夹.git(隐藏文件夹),类似npm init初始化项目
touch README.md #创建文件
git add README.md #提交暂存区
git commit -m "first commit" #提交本地仓库
git remote add origin https://gitee.com/huitailang2021/mytest.git #指定origin的地址
git push -u origin "master" #提交远程仓库
远程仓库
- 推送到远程分支(创建远程分支dev):`git push origin master:dev`
- 查看所有分支:`git branch -a`
- 删除远程分支:`git push origin :dev` (推送一个空分支到远程分支,相当于删除远程分支)
- 删除远程分支:`git push origin --delete dev`
4.标准盒模型和怪异和模型有什么区别?
- 盒模型其实就是浏览器把一个个标签都看一个矩形盒子,那每个盒子(即标签)都会有内容
(width,height),边框(border),以及内容和边框中间的缝隙(即内间距padding),还有盒子与盒子
之间的外间距(即margin),用图表示为:
- 当然盒模型包括两种:IE盒模型和w3c标准盒模型
IE盒模型总宽度即就是width宽度=border+padding+内容宽度
标砖盒模型总宽度=border+padding+width
那如何在IE盒模型宽度和标准盒模型总宽度之间切换呢,可以通过box-sizing:border-box或设置成
content-box来切换
- box-sizing:content-box //w3c盒模型
5.event loop 事件循环如何理解?
event loop 就是对任务执行顺序做了详细的规范
- js是单线程 脚本语言 是弱类型语言
- 分为同步任务和异步任务两种
- 异步任务分为 微任务和宏任务两种
- 微任务:promise.then() promise.catch() pracess.nextTick
- 宏任务:setTimeOut setInterval xhr
先执行微任务再执行宏任务
6.数组方法有哪些?
(-)字符串常用方法
- length 获取字符串的长度
- charAt 返回某个下标上的字符
- charCodeAt 与charAt类似,它返回的是uniCode 16位整数
- indexOf 找下标 有的话返回位置下标 没有返回-1
- lastIndexOf 从右向左找下标
- includes 判断是否包含某一项 返回布尔值
- search 用正则表达式找指定字符 找到返回首次匹配成功的字符 没找到返回-1
- concat 合并数组 返回一个新数组
- trim 删除字符串左右的空格
- split 字符串转数组
- substr(开始的位置,截取的长度)
- slice(start,end) 从start开始截,截取到end个,不包含end
- .str.substring 和slice方法功能相同,都是提取一个字符串,并返回提取到的字符串
- replace(替换谁,替换的值)
- toLowerCase 没有参数,把调用该方法的字符串值转为小写,并返回
- oUpperCase 没有参数,把调用该方法的字符串值转为大写,并返回
- parsent() 取整
var x = parseInt("10px")
console.log(x) // x = 10
- parseFloat 解析不同的字符串
document.write(parseFloat("10"))
document.write(parseFloat("10.00"))
document.write(parseFloat("10.33"))
document.write(parseFloat("34 45 66"))
document.write(parseFloat(" 60 "))
打印出来分别是 10 10 10.33 34 60
- repeat 返回一个新字符串,把原字符串重复n次
const main = () => {
let s = '哈'
console.log(s.repeat(3)) //哈哈哈
}
main();
(2)数组常用方法
- concat 合并数组 返回新数组
- join 数组变成字符串
- shift 头部删除 返回 删除的元素
- unshift 头部添加 返回数组长度 原数组改变
- pop 末尾删除 返回删除的元素 原数组改变
- push 末尾添加 返回数组长度 原数组改变
- sort 排序 原数组改变
- reverse 翻转数组
- slice(start,end) 从start开始截,截取到end个,不包含end
- splice 可以删除 替换 添加 (注意:替换时第二个参数是0)
两个参数是删除:splice(从哪里开始,删除的个数), 原数组会发生改变 返回删除的内容
三个参数是替换:splice(从哪开始,0,添加的内容)
- indexOf 找下标 有的话返回位置下标 没有返回-1
- lastIndexOf 从右向左找下标
- includes 判断是否包含某一项 返回布尔值
- forEach 循环遍历操作原数组 没有返回值
- find 查找目标元素,找到就返回该元素,找不到返回undefined
- findIndex 也是查找目标元素,找到就返回元素的位置,找不到就返回-1。
- map 循环 返回一个新的数组 原数组不变
- filter 过滤 返回一个新数组
7.扩展运算符与rest 剩余参数什么意思,应用场景?
- 扩展运算符:把数组或类数组展开成用逗号分隔的值
- 将数组展开成用逗号隔开的值:
- 将两个数组合并成一个数组:
- 扩展一个字符串:
- rest参数:把逗号隔开的值组成一个数组
- 不定参数的函数求和:
- 通过…来接收参数,把逗号隔开的值组合成一个数组:
- 获取剩余的参数:
- 用于解构赋值:
- 总结...有两种含义,这两种操作相当于是互逆操作:
- 若把…放在等号左边或者放在形参上面,那么它就是rest参数
- …若在等号的右边或者放在实参上,则是扩展运算符
8.es6新增数据结构Set,Map 代表什么意思?利用期中一种实现数组去重?
set
<script>
//Set Map weakSet() weakMap()
//Set() Set本身是一个构造函数,用来生成 Set 数据结构
let s = new Set()
console.log(s);
let arr = [1,2,2,3,4,5,5,6]
arr.forEach(x => s.add(x));
console.log(s);//
// add() 方法就是Set原型上的方法,可以往Set里面去添加内容 ,就相当于数组中的push()方法
s.add(99)
console.log(s);
console.log(s.size);//Set结构的长度 相当于数组中length
s.delete(99)
console.log(s);///delete()方法就是Set()删除方法 参数就是你要删除后的元素
console.log(s.has(1));//判断Set结构有没有该元素,如果有就返回true 没有就返回false
console.log(s.values());
let set = new Set(['red','pink','blue','orange'])
console.log(set.keys());//返回的键名的遍历器
console.log(set.values());//返回的键值的遍历器
console.log(set.entries());//返回的键值对的遍历器
// forEach() Set结构可以使用forEach 遍历每一个set成员
// for(let item of set.keys()){
// console.log(item);
// }
set.forEach(item=>{
console.log(item);
})
// Set结构 如果存放对象 没有去重功能
let ss = new Set()
console.log(ss);
ss.add({"name":'zs'})
ss.add({"age":18})
console.log(ss);
let x = NaN
let y = NaN
console.log(x===y); //在js中NAN不等于NAN
ss.add(x)
ss.add(y)
console.log(ss);///在Set结构里面,NAN===NAN
console.log(ss.keys());
console.log(ss.values());
console.log(ss.entries());
</script>
map
<script>
// let o = {
// name:'zs'
// }
// Map 和WeakMap
// Map 他属于Map数据结构 他实际上也是一个构造函数
// JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。
let map = new Map()
let obj = {
name:'zs'
}
let obj1 = {
name:'李四'
}
// set() 是map结构原型上的方法 可以往map里面去添加内容 第一个参数是 键名 第二个参数是建值
map.set(obj,obj1)
console.log(map);
// get()方法 获取map里面的建值
console.log(map.get(obj));
let arr = [['name','刘德华'],['hubby','唱歌']]
arr.forEach((item,index)=>{
map.set(item,index)
})
map.set(true,'我是布尔值')
map.set(()=>{},'我是函数的值')
console.log(map.size);
map.clear()
console.log(map);
// Map结构 不仅能使用字符串当做键名 还可以使用 数组,对象,函数,布尔值,。。。。。当做键名
// set() get() size 长度属性 has() delete 删除 entries 键值对的遍历器 keys键名的遍历器 values建值的遍历器 forEach() 循环遍历 clear 方法清除所有的成员
console.log(map.keys());
// WeakMap WeakMap结构与Map结构类似,也是用于生成键值对的集合。
// WeakMap 只能接受对象作为他的键名 如果设置其他类型的数据当做键名,直接报错
let wm = new WeakMap()
// wm.set('name','hhhh') //报错 只能接受对象作为键名
wm.set({},'zs')
console.log(wm); //没有size属性 forEach方法 不能循环遍历 没有keys values entries.... 没有clear方法
</script>
9.说下你理解的Promise?用Promise封装一个网络请求,核心代码?
-
1.1promise的概念 Promise 是es6提供的一种异步解决方案 promise 本身是一个同步的,是一个容器用来存放异步的代码
-
1.2promise 用来干什么的 用来对原生ajax的封装 对axios的二次封装 uni.request 的封装 发送网络请求的
-
1.3promise 接收一个回调函数当做参数,回调函数里有两个参数分别是 resolve 和 reject, 当请求成功的时候就需要用reslove的方法将成功的结构返回出去,用.then()的方法来接收 当请求失败的时候就需要用reject 的方法将失败的结果返回出去 ,用.catch()的方法来接收
-
1.4promise有三种状态 分别是 正在进行中pending 已经成功的 fulfilled 已经失败的rejected promise的状态一旦是正在进行中,就不能随意的去更改状态 ,pending正在进行的状态是不可逆的
-
1.5我们所学的那些是本身就是promise对象?那些不是promise对象 juqery中的ajax 本身就是promise对象 还有axios 本身也是一个promise对象 原生的ajax 和uni.request() 本身就不是promise对象 如果想要写成链式写法就需要自己封装一个promise
-
1.6promise提供了一些常用的方法比如 all race finally 等的方法 Promise中的 all 和race都是将多个请求合并成一个请求但是还是有区别的 race将多个请求合并成一个请求,谁先请求成功就返回谁 finally 方法无论promise处于什么状态都会执行的方法 图例:
10.说一下es6的导入导出如何使用
模块化的两种语法:
- es6的 import 引入 export default 导出
- common.js语法 require()引入 module.exports导出
- 专5的时候用的是commonjs语法
- 我们现在vue用的是es6的import 的导入 export default 导出