笔记

41 阅读4分钟

1、跨域 JSONP 因为script标签中的src属性不受浏览器同源策略的影响, proxy代理 nginx代理 windows.postMessage()

2、浏览器重绘与重排 重排/回流:DOM变化影响元素的几何信息,浏览器要重新计算几何属性, 重绘:元素的外观发生改变,但是布局没有变化

3、语义化 使用合理的语义化标签来创建页面结构

4、选择器 id #idName 类.className 属性 ref 伪类 hover nth-child 标签 相邻+ 子> 后代 li a 空格 通配符*

5、position fixed 相对浏览器窗口,位置和文档其他元素无关,因此可能会重叠 relative 相对于自己定位,但是原来的位置是占据的,因此也可能和其他元素重叠 absolute 相对最近的父元素(非static),元素的位置与文档流无关,因此不占据空间 static 默认

6、块级格式化上下文BFC 规定内部如果布局,不影响外部的元素

7、水平居中 text-align 针对行内元素有效,可把子元素设置为inline 或者inline-block 确定宽度的 width 和margin:0 auto flex布局 绝对定位position:absolute配合left topt transform 垂直居中可同上

8、隐藏元素 opacity:0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定 一些事件,如click 事件,那么点击该区域,也能触发点击事件的
visibility:hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已 经绑定的事件 ,隐藏对应元素,在文档布局中仍保留原来的空间(重绘)
display:none,把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素。 不显示对应的元素,在文档布局中不再分配空间(回流+重绘)
该问题会引出 回流和重绘

9、三角形 盒子的宽高都是0,设置边框的宽度,且三个边框设置透明

10、rem 相对根元素的font-size 大小来计算,比如根元素的font-size:10px,则1rem = 10px。改变了一个元素在不同设备上占据的css像素的个数

11、viewport 每一个元素在不同设备上占据的css像素的个数是一样的。但是css像素和物理像素的比例是不一样的

12、数据类型 基本类型:Number(数字),String(字符串),Boolean(布尔),Symbol(符号),null(空),undefined(未定义)在内存中占据大小固定,保存在栈内存中 引用类型:对象 函数 数据 日期 正则,内置对象乳Math等 保存在堆内存中

13、判断类型 typeof 能够快速区分基本数据类型,不能将Object、Array和Null区分,都返回object instanceof 能够区分Array、Object和Function,适合用于判断自定义的类实例对象,Number,Boolean,String基本数据类型不能判断 Object.prototype.toString.call()比较准确,可以封装后使用

14、var let const var定义的变量没有块的概念,但是不能跨函数访问,可以先使用后申明 let和const定义的不能跨块和函数访问,必须先声明后使用 const定义的变量使用时必须初始化,且不能修改

15、作用域和作用域链 作用域是变量或者函数的可访问范围 全局作用域和函数作用域,作用域可以用来隔离变量,不同作用域下面同名变量不会有冲突 函数被创建的时候,创建函数的上下文就是这个函数的作用域, 查找变量 先去创建变量的作用域里面去找,找不到就往上级,形成了作用域链

16、闭包 函数执行的时候,会形成私有执行上下文,用来保护和保存私有变量,有权利访问 闭包是指有权访问另一个函数作用域中的变量的函数 在js中变量的作用域属于函数作用域, 在函数执行完后,作用域就会被清理,内存也会随之被回收,但是由于闭包函数是建立在函数内部的子函数, 由于其可访问上级作用域,即使上级函数执行完, 作用域也不会随之销毁, 这时的子函数(也就是闭包),便拥有了访问上级作用域中变量的权限,即使上级函数执行完后作用域内的值也不会被销毁。