数组扁平化实现keep-alivepromise和settimeout执行顺序懒加载实现原理 可视窗口怎么判断定义变量的方法 var let const的区别null和undefined的区别伸缩性布局 flex布局 align-items justify-content闭包的理解 应用场景原型_proto_和prototype区别string为什么是基本数据类型typeof null是什么