1.前端如何跨域请求。
https://blog.csdn.net/weixin_30363263/article/details/81587025
2 如何做浏览器兼容
3 讲讲知道的es6的东西
https://segmentfault.com/a/1190000004365693
4 var与let的区别
-
let : 变量只能声明一次
var : 变量可以多次声明
let的好处是当我们写代码比较多的时候可以避免在不知道的情况下重复声明变量
通过var定义的变量, -
作用域是整个封闭函数,是全域的 。通过let定义的变量,作用域是在块级或是子块中。
-
浏览器在运行代码之前会进行预解析,首先解析函数声明,定义变量,解析完之后再对函数、变量进行运行、赋值等。
-不论var声明的变量处于当前作用域的第几行,都会提升到作用域的头部。
-var 声明的变量会被提升到作用域的顶部并初始化为undefined,而let声明的变量在作用域的顶部未被初始化// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
//相当于
var foo; //声明且初始化为undefined
console.log(foo);
foo=2;// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
//相当于在第一行先声明bar但没有初始化,直到赋值时才初始化
但是直接用let声明变量不赋值是会打印undefined,还是初始化了,只是let声明放在赋值之后,let声明会提前但不会初始化。
5 const定义的对象属性是否可以改变
https://blog.csdn.net/w1019945543/article/details/80966847
6 闭包的理解,哪些情况下会用到闭包
闭包的理解
http://www.cnblogs.com/pssp/p/5189345.html
https://www.cnblogs.com/pssp/p/5224509.html
哪些情况下会用到闭包
https://www.jianshu.com/p/132fb6d485ee
闭包经典使用场景一:通过循环给页面上多个dom节点绑定事件
闭包使用场景二:封装变量。闭包可以将一些不希望暴露在全局的变量封装成“私有变量”。
7 em rem区别
https://www.cnblogs.com/leejersey/p/3662612.html
em的值并不是固定的;
em会继承父级元素的字体大小。
这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。
8 如何压缩css代码?
网上有工具
9 箭头函数的优点
https://www.jianshu.com/p/a5c68ff26aa4
箭头函数写代码拥有更加简洁的语法;
不会绑定this。
10 ajax
https://blog.csdn.net/hyunbar/article/details/78500837
11 深拷贝 浅拷贝
https://www.cnblogs.com/echolun/p/7889848.html
可以借用JSON对象的parse和stringify实现深拷贝
function deepClone(obj){
let _obj = JSON.stringify(obj),
objClone = JSON.parse(_obj);
return objClone
}
let a=[0,1,[2,3],4],
b=deepClone(a);
a[0]=1;
a[2][0]=1;
console.log(a,b);
12 怎么判断数组和对象
https://www.cnblogs.com/Walker-lyl/p/5597547.html
除了文章所写,isArray这个方法也提供判断类型
13 数组的常用方法
https://www.cnblogs.com/songzk/p/6081883.html
1.push(): 向数组尾部添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
pop(): 删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。
unshift():在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
14 如何画一个圆
15 如何画一个三角形
16 鼠标悬停时div如何向右移动10px
17 数组去重
18 清除浮动的几种方法
https://blog.csdn.net/h_qingyi/article/details/81269667
1.额外标签法(在最后一个浮动标签后,新加一个标签,给其设置clear:both;)
2.给浮动元素的容器添加overflow:hidden;的属性和赋值。
3.通过CSS3的:after伪元素。
通过:after伪元素设置样式来实现浮动清除,是时下最为流行的清除浮动方式。它实现的原理与方法(1)一样,效果也可以一样。但是借助:after微元素设置样式,不需要在HTML代码上额外增加元素。
4.设置容器元素高度height,只适合高度固定的布局。
Angular
1 讲一下依赖注入
2 讲一下路由
3 讲一下你实现的一个功能
4 如何打包