美文网首页
其难杂症

其难杂症

作者: simonbaker | 来源:发表于2018-06-20 09:32 被阅读4次

    排序

    冒泡排序,快速排序

    查找算法

    二分查找算法

    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

    相关文章

      网友评论

          本文标题:其难杂症

          本文链接:https://www.haomeiwen.com/subject/bestyftx.html