排序
冒泡排序,快速排序
查找算法
二分查找算法
Array方法
push/unshift,pop/shift,map
String方法
substr,substring,slice
Number方法
parseInt(string, radix);
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt
注意:radix参数为n 将会把第一个参数看作是一个数的n进制表示,而返回的值则是十进制的。
所以就能解释为什么parseInt('3',2)=NaN
了,是因为二进制数字中,根本没有数字3,只有1和2。
Object方法
call,apply
算法
动态规划
正则
邮箱,手机号,中英文
Vue
双向绑定原理
React
双向绑定?单向数据流
Webpack/gulp/grunt
打包原理
闭包
可以访问函数内部的变量
Math.random
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/random
image.png image.pngimage.png
JS浮点
0.1+0.2!=0.3
事实上,不仅仅是 JS,在其他采用 IEEE754 浮点数标准的语言中,0.1 + 0.2 都不会等于 0.3,但是 0.2 + 0.3 却等于 0.5
https://juejin.im/post/5a6fce10f265da3e261c3c71
https://www.barretlee.com/blog/2016/09/28/ieee754-operation-in-js/
https://www.cnblogs.com/fsjohnhuang/p/5115672.html
encodeURIComponent
https://www.jianshu.com/p/c392e1c55a95
setTimeout/setInterval
单线程,事件循环
toString/valudeOf
http://frontenddev.org/link/conversion-of-tostring-and-the-valueof-javascript-object.html
for...in/for...of
for...in主要用于遍历Object,但也可用于Array
for...of则是用于Array
for (variable in object) {...}
variable
在每次迭代时,将不同的属性名分配给变量。
object
被迭代枚举其属性的对象。
for (variable of iterable) {
//statements
}
variable
在每次迭代中,将不同属性的值分配给变量。
iterable
被迭代枚举其属性的对象。
//两者的区别
a=[5,6,7]
for(var p in a){console.log(p)}
0
1
2
for(var p of a){console.log(p)}
5
6
7
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...in
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of
arr.indexOf/str.indexOf
arr.indexOf(searchElement[, fromIndex = 0])
str.indexOf(searchValue[, fromIndex])
arr.indexOf(searchElement[, fromIndex = 0])
如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。 注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于0,则整个数组都将会被查询。
抵消,就是数组长度+fromIndex的意思。如arr=[1,2,3];fromIndex=-1,则从3+(-1)=2的索引位置开始往后查询。
str.indexOf(searchValue[, fromIndex])
如果 fromIndex < 0 则查找整个字符串(如同传进了 0)。如果 fromIndex >= str.length,则该方法返回 -1,除非被查找的字符串是一个空字符串,此时返回 str.length。
//字符串长度为10
"Blue Whale".indexOf("", 9); // returns 9(只要fromIndex小于10,都会返回fromIndex的值)
"Blue Whale".indexOf("", 10); // returns 10(大于等于10,则都返回10)
"Blue Whale".indexOf("", 11); // returns 10
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
property/attribute
- Property
每个DOM节点都是一个object对象,它可以像其他的js Object一样具有自己的property和method,所以property的值可以是任何数据类型,大小写敏感,原则上property应该仅供js操作,不会出现在html中(默认属性除外:id/src/href/className/dir/title/lang等),和其他js object一样,自定义的property也会出现在object的for…in遍历中。 - Attribute
attribute出现在dom中,js提供了getAttribute/setAttribute等方法来获取和改变它的值,attribute的值只能是字符串且大小写不敏感,最后作用于html中,可以影响innerHTML获取的值。可以通过访问dom节点的attributes属性来获取改节点的所有的attribute。(在IE<9中,attribute获取和改变的实际上是property。)
http://web.jobbole.com/83388/
https://segmentfault.com/a/1190000008781121
getComputedStyle/getPropertyValue
getPropertyValue获取值的时候要不能是驼峰法,而是连接符方式,如
elem.getPropertyValue('writing-mode')
,而不是elem.getPropertyValue('writingMode')
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/getComputedStyle
https://developer.mozilla.org/zh-CN/docs/Web/API/CSSStyleDeclaration/getPropertyValue
https://www.zhangxinxu.com/wordpress/2012/05/getcomputedstyle-js-getpropertyvalue-currentstyle/
css/js加载阻塞?
https://developers.google.com/web/fundamentals/performance/critical-rendering-path/?hl=zh-cn
- js加载会阻塞DOM和CSSOM渲染
- css不会阻塞DOM渲染,但会阻塞渲染树构建。渲染树构建是DOM和CSSOM一起完成的。
deferer/async
https://github.com/xiaoyu2er/blog/issues/8
URL按下enter发生了什么?
https://juejin.im/entry/58ba9cb5128fe100643da2cc
缓存
image.png二叉树
二叉树
二叉树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。
wiki
二叉搜索树
二叉查找树(英语:Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:
若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
任意节点的左、右子树也分别为二叉查找树;
没有键值相等的节点。
wiki
microtask/macrotask
macrotasks: setTimeout, setInterval, setImmediate, I/O, UI rendering
microtasks: process.nextTick, Promises, Object.observe(废弃), MutationObserve
setImmediate:
该方法最近刚刚被微软提出, 可能不会被w3c批准成为标准, 目前只有 Internet Explorer 10实现了该方法.
mdn
Object.observe:
Object.observe() 方法用于异步地监视一个对象的修改。当对象属性被修改时,方法的回调函数会提供一个有序的修改流。然而,这个接口已经被废弃并从各浏览器中移除。你可以使用更通用的 Proxy 对象替代。
mdn
MutationObserve:
MutationObserver给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力.该API设计用来替换掉在DOM3事件规范中引入的Mutation事件.mdn
vue
queueWatcher/nextTick
异步更新DOM策略及nextTick
动态规划
斐波那契
在数学上,费波那契数列是以递归的方法来定义:
image.png
用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出。首几个费波那契系数是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……(OEIS中的数列A000045)
特别指出:0不是第一项,而是第零项。
wiki
网友评论