js 常用

来源:互联网 发布:兄弟连it教育招聘 编辑:程序博客网 时间:2024/06/04 18:19

1MacrotaskMicrotask

Macrotask Microtask都是属于异步任务中的一种

· Macrotasks setTimeout, setInterval, setImmediate, I/O, UI rendering

· Microtask process.nextTick, Promises, Object.observe, MutationObserver

Mutation Observer(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时,Mutation Observer会得到通知。

在每一次事件循环中,macrotask 只会提取一个执行,而 microtask 会一直提取,直到microtasks 队列清空。而事件循环每次只会入栈一个macrotask ,主线程执行完该任务后又会先检查microtasks 队列并完成里面的所有任务后再执行macrotask

用处

可以看出 Macrotask 的优先级低于 Microtask ,那么UI rendering 之前我们可以做很多数据上的处理,比如Vue 使用MutationObserver 可以处理完所有数据处理后再统一做UI render

参考:

https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/

 

 

 

2、取消事件的默认动作。

语法

event.preventDefault()

例如,如果 type 属性是"submit",在事件传播的任意阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。注意,如果Event 对象的cancelable 属性是fasle,那么就没有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用

事件冒泡顺序:由内至外,由子元素至父元素

1.event.stopPropagation(); 

   事件处理过程中,阻止了事件冒泡,但不会阻击默认行为(它就执行了超链接的跳转)

 

2.return false;

   事件处理过程中,阻止了事件冒泡,也阻止了默认行为(比如刚才它就没有执行超链接的跳转)

 

还有一种有冒泡有关的:

3.event.preventDefault(); 

   如果把它放在头部A标签的click事件中,点击点击我

   会发现它依次弹出:我是最里层---->我是中间层---->我是最外层,但最后却没有跳转到百度

   它的作用是:事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)

 

 

3this指向;

4.回调函数

5localstiorage大小,5M

   Cookie大小

   URL IE的话,最大的长度2083字符,若是中文字符的话只有2083/9=231

6、设计模式

7、|是前后两数转成二进制后相加的结果;||,如果为false则执行右边的语句

8、模块化的写法:

http://www.ruanyifeng.com/blog/2012/10/javascript_module.html 

原始做法:"污染"全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。 

9.立即执行函数: (function ( ){...})( )(function ( ){...}( ))有什么区别?

function foo() {...}     // 这是定义,Declaration;定义只是让解释器知道其存在,但是不会运行。

foo();   // 这是语句,Statement;解释器遇到语句是会运行它的。

传统方法:

1. 传统的方法啰嗦,定义和执行分开写;

2. 传统的方法直接污染全局命名空间(浏览器里的 global 对象,如 window

用经典的立即执行函数写法把所有代码包起来( 主要作用应该是避免污染全局变量不暴露私有成员 ),一般jquery的插件都可以看到

10、JavaScript 内存泄漏:

http://www.ruanyifeng.com/blog/2017/04/memory-leak.html 

11、avascript 严格模式

http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html

12、arguments caller

13、String indexof array findIndex

14、传值太大会影响性能?

15、Js JSON.parse 严格要求json格式;key必须是双引号

如:JSON.parse(‘{ key: 1}’)报错

JSON.parse(‘{ “key”: 1}’)正确

 

 

 

 

原创粉丝点击