查漏补缺(七)

查漏补缺(七)

规范

1. 内联元素不能包含块级元素;
2. 块级元素可以包含内联元素或某些块级元素;
3. p标签不能包含任何块级元素,包括自身;
4. a标签可以包含任何元素,但不能包含自身;
5. h1、h2、h3、h4、h5、h6、p、dt不能包含块级元素;
6. h5的新标签是footer,不是foot;
7. h5标签有main标签
将渲染阶段的开销转嫁到计算阶段之上。
使用多个分层的 Canvas 绘制复杂场景。
不要频繁设置绘图上下文的 font 属性。
不在动画中使用 putImageData 方法。
通过计算和判断,避免无谓的绘制操作。
将固定的内容预先绘制在离屏 Canvas 上以提高性能。
使用 Worker 和拆分任务的方法避免复杂算法阻塞动画运行

https://blog.csdn.net/weixin_33940102/article/details/90687163?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

'9' < '10' //false
String('a') === 'a' //true
new String('a') === 'a' //false

JS中字符串比较大小是比较字符串不同字符的ASCII码值

Object.defineProperty

const obj = {
	a: 1,
	b: 2
}
Object.defineProperty(obj,'c', {
	value: 3,
	//对此属性的限制,如是否允许编辑、是否允许遍历
	//writable
	//enumerable
})

for in

for in遍历可以遍历自己和父级属性,不能遍历爷爷以及更以后的属性

事件冒泡与事件默认

preventDefault() 阻止事件默认行为
stopPropagation() W3C标准的阻止冒泡
cancelBubble() ie的阻止冒泡

https://www.cnblogs.com/zhangq/p/10621413.html

let与var的区别

  1. let是块级作用域,var是函数作用域;
  2. let必须先声明后使用,var可以,并且未声明之前打印得到结果为undefined;
  3. let不能与变量名一起重新定义,var可以;
  4. let、var在for循环中的区别:
    • 由于let是块级作用域,使用let定义的for循环变量每次循环时都会创建一个作用域,循环变量是局部变量不会受后面循环影响;
    • var是全局变量,在for循环中每次改变都是改变全局变量
    • const实际上保证的并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据而言,值就保存在变量指向的内存地址中,因此等同于常量。但对于复合类型的数据,变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,则完全不能控制。

JS模块化规范

AMD、commonJS、ES Modules
require.js是amd规范的实现者

你可能感兴趣的:(前端面试,javascript,前端,css3)