js 常用

1Macrotask Microtask

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}’)正确

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值