其难杂症

2018-06-20  本文已影响4人  simonbaker

排序

冒泡排序,快速排序

查找算法

二分查找算法

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.png
image.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

  1. Property
    每个DOM节点都是一个object对象,它可以像其他的js Object一样具有自己的property和method,所以property的值可以是任何数据类型,大小写敏感,原则上property应该仅供js操作,不会出现在html中(默认属性除外:id/src/href/className/dir/title/lang等),和其他js object一样,自定义的property也会出现在object的for…in遍历中。
  2. 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

  1. js加载会阻塞DOM和CSSOM渲染
  2. css不会阻塞DOM渲染,但会阻塞渲染树构建。渲染树构建是DOM和CSSOM一起完成的。

deferer/async

https://github.com/xiaoyu2er/blog/issues/8

URL按下enter发生了什么?

https://juejin.im/entry/58ba9cb5128fe100643da2cc

image.png

缓存

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

image.png
上一篇下一篇

猜你喜欢

热点阅读