-
精度丢失:请看本主页另一篇文章juejin.cn/post/693318…
-
Js数据类型:
-
基本类型
-
Symbol(ES6新增):
-
BigInt(ES2020):
-
引用类型:object
-
浅克隆、深克隆:
-
浅克隆:对于基本类型直接就是赋值,对于引用类型是赋值的引用。
-
深克隆:利用递归,实现将一个引用类型完全复制,不同的内存地址。
-
事件流:
-
父子元素的事件流关系:
-
当容器元素及嵌套元素,即在
捕获阶段
又在冒泡阶段
调用事件处理程序时:事件按DOM事件流的顺序执行事件处理程序: -
且当事件处于目标阶段时,事件调用顺序决定于绑定事件的书写顺序。
-
事件绑定函数:
-
DOM0级是onclick之类的。
-
DOM2级是addEventListener()之类的。
-
IE是 attchEvent()之类的。事件的作用域为全局的,this是window。绑定多个事件,以栈的形式存放。
-
事件实现方式:
-
发布订阅模式:
-
先发布。
-
后触发。
-
DOM事件:
-
DOM0
-
DOM2
-
DOM3:事件类型出现,UI事件、焦点事件等。
-
new一个函数 发生了什么:
-
如何产生闭包:
-
返回函数。
-
函数当做参数传递。
-
闭包应用场景:
-
柯里化bind
-
模块。
-
NAN表示非数字,类型是Number。
-
JS隐式转换、显示转换:
-
bind、call、apply:
-
setTimeout问题:
-
手写promise:
-
js脚本加载:
-
async:
-
defer:
-
判断一个对象是空对象:Object.key(myobject).length===0.
-
onload是等所有加载完毕再执行,包括外部引入的JS文件。
-
JS的特点:
-
动态语言。
-
this、原型、原型链。
-
分为语言部分和宿主环境部分。
-
宿主环境部分分为:
-
浏览器环境:BOM和DOM
-
Node环境
-
2015是第一版ES6.
-
数组原型链上面的方法:valueOf、toString、isArray.
-
函数中的arguments是伪数组类型,鸭子类型;转换为真数组,见文章:juejin.cn/post/693308…
-
TypeScirpt:
-
PWA、serviceWorker:
-
this绑定四大规则:
-
箭头函数补充:
-
事件循环机制:
-
instance
-
五点布局
-
map和object的区别
-
equestAnimationFrame,讲讲和setInterval的区别:
-
canvas吗,如果要实现一个一笔一画写汉字的效果:
-
HTML中h标签有多少个,表示段落的标签是哪个?
-
表示列表的标签有多少个?
-
表示引用的标签是什么?
-
对语义化的看法?
-
大小单位里面有一个单位是相对字体大小的,是什么?
-
具体看css单位文章:juejin.cn/post/693428…
-
控制字体换行,大小写转换的属性?
-
怎么设置一个圆形?如果设置的值超过50%会发生什么?
-
喜欢JS的什么地方?
-
HTTP2.0了解吗,讲讲和HTTP1.1的区别:
-
async-await改写一个回调地狱:
-
localStorage:
-
http:状态码
-
跨域的方法:
-
AMD与CMD和CommonJS:
-
网络安全(XSS和CSRF)及如何防范:
-
XSS:跨域攻击,通过恶意脚本(HTML,等进行数据跨域发送。)
-
同源:如果两个url的协议、域名、端口号完全一致,那么这两个url是同源的。不同源的页面之间不准相互访问数据,这是浏览器为保护用户隐私设置的安全策略。
-
浏览器规定如果JS运行在源A里,那么只能获取源A的数据,不能获取源B的数据,也就是不允许跨域。所以,跨域就是允许不同源的页面之间相互访问数据。
-
跨站脚本攻击
XSS
(cross site script
)。 -
主要防御手段:输入输出过滤、长度限制、
cookie
设置http-only
-
跨站请求伪造
CSRF
(cross site request forgery
)。 -
img等标签跨域GET请求、POST自动表单提交。
-
主要防御手段:尽可能使用POST方式、验证码、验证 Referer、CSRF Token。
-
常见的伪类和伪元素:
-
选择器的效率问题:
-
移动端适配:
-
Vue和React的vdom算法对比:
-
持续集成的问题:
-
VueRouter两种模式的原理:
-
Webpack的loader和plugins原理:
-
.JSONP是怎么解决跨域的:
-
cookie是干什么的:
-
jwt:
-
travis.yml的配置项:
-
canvas: