1、 函数调用 和 函数地址 情况使用:
调用时 是立即执行函数;赋值函数地址是 触发执行函数
2、逗号运算符:
取最后一个值
3、匿名函数 :
函数没有名字 ,(有一些函数表达式)
4、
splice()作用:增 删 改数组元素
slice()作用:截取数组或字符串
5.、设置字体
@font-face {
font-family: "myfont" ;
scr: url();
}
6、比较运算符 < > <= >= === == != !==
① 字符串 或 布尔值 和数值比较 ,先转换成数值类型 , 再比较
console.log("5" > 3) // true
console.log(true > 0) // true
② 字符串 和 字符串 比较 ,按照从左到右的顺序 ,比较 字符在ASCII码表中的大小
console.log("5" > "12") // true
console.log("10" > "12") // false
③ null ,undefined 和 数值 比较
遇== : 不会转换,没有可比性
console.log(null == 0) // false
遇 < > >=等: 通过Number()隐式转换,null 转换为 0 ;undefined 转换为 NaN
console.log(null >= 0) // true
④ null 和 undefined 比较:
console.log(null == undefined) // true
console.log(null === undefined) // false
⑤ NaN 与任何值都不相等 ,包括本身:
console.log("NaN"== "NaN") // true
console.log( NaN== NaN) // false
7、css :图片和文字对齐
vertical-align: middle;//中间对齐
vertical-align: top;//顶部对齐
vertical-align: baseline;//底部对齐
8、浏览器为什么设置为单线程,而不是多线程?
如果浏览器是多线程的 ,那么当两个线程同时对同一个节点发出两个矛盾的 命令时,浏览器不知道应该先执行谁的命令 ,会混乱 ; 所以单线程就 解决了这个问题。
9、css预处理器有:
less
sass
10、垃圾回收
js解释器,解析js代码 ;node 也可以解析js代码。
不管在什么环境运行代码 ,使用完的变量 ,函数 就会进行垃圾回收 ;
垃圾回收方法:① 标记清除
② 引用计数
11、闭包
闭包造成内存泄漏 , 可以手动设置为null ,进行垃圾回收
12、浏览器怎么解析js
① 语法分析
② 预编译 创建GO 对象;和函数AO 对象
③ 执行代码
13、防抖和节流
都是针对高频触发事件!提高效率!
防抖:让事件在n 秒后 执行 , 如果在n秒内再次触发,则重新开始计时。
setTimeout()
节流:让事件每隔n秒 执行一次 ,稀释触发频率。(让事件在n 秒后 执行 , 如果在n秒内再次触发 ,则不执行。)
setInterval()
// 防抖
function fn (){
console.log("事件处理函数")
}
document.querySelector(".box").onmousemove = delay();
function delay(){
let tid =null;
return function(){
if(tid) clearTimeout(tid);
tid = setTimeout(()=>{
fn();
},500)
}
}
// 节流
function fn (){
console.log("事件处理函数")
}
document.querySelector(".box").onmousemove = delay();
function delay(){
let tid =null;
return function(){
if(tid) return;
tid = setTimeout(()=>{
fn();
tid = null;
},500)
}
}
13、父子结点margin合并问题
CSS的技术文档中有:
In this specification,the expression collasing margins means that adjoining margins(no non-empty content,padding or border areas or clearance separate them)of two or more boxes(which may be next to on another or nested)combine to form a single margin。
大意为折叠边距意味着会邻接两个或多个盒元素的没有非空内容、没有内边距、没有边区域或用间隙分开它们的外边距合并成一个外边距。
以上就是产生这种现象有原因。父元素的第一个子元素的上边距margin-top如果碰不到有效的border或者padding或者非空内容(如一段文字),就会一层一层地合并父元素的margin-top成一个单独的margin-top。因此只要给父元素设置个有效的 border或者padding或在子元素前增加一段非空内容(如文字)就可以阻止它去合并父元素的外边距啦。
原文链接:https://blog.csdn.net/weixin_40763897/article/details/103020863
14、优化前端性能?
html :结构清晰,seo语义化标签,优化meta–keyword
css :文件合并,样式选择器预先写好
js : dom操作合并,尽量避免dom操作放到for循环里,尽量多使用事件代理,避免重绘和重排,防抖和节流T模块化
静态资源 :CDN分布式服务器,雪碧图、图片精灵,懒加载或预加载 ,缓存优化,localstrorage sessionstrorage
网络请求:get
webpack插件做优化 :压缩,删除死代码,提取公共代码
1、添加配置,压缩代码
2、使用CDN
3、追加参数,删除死代码,–optimize-minimize
4、提取公共代码
15、去除li标签圆点
list-style:none;
16、胶囊型边角
border-radio为高度的一半