摘要:
上面代码是一个阶乘函数,计算n的阶乘,最多需要保存n个调用记录,复杂度 O(n) 。 如果改写成尾递归,只保留一个调用记录,复杂度 O(1) 。 尾递归 函数调用自身,称为递归。如果尾调用自身,就称为尾递归。 递归非常耗费内存,因为需要同时保存成千上百个调用帧,很容易发生“栈溢出”错误(stack 阅读全文
摘要:
考察对new关键的深刻认识,是否对前端知识有专研,如果没有专研的人,肯定说创建了一个对象,恭喜你面试官知道你是小菜鸟来的,这次面试基本上没有太大的希望了。一定要对new过程的4个步骤非常清楚,这样才能深深地抓住面试官的心! new共经过了4几个阶段 1、创建一个空对象 2、设置原型链 3、让Func 阅读全文
摘要:
1、可以将token存储在 localstorage里面,在一个统一的地方复写请求头,让每次请求都在header中带上这个token, 当token失效的时候,后端肯定会返回401,这个时候在你可以在前端代码中操作返回登陆页面,清除localstorage中的token就好。 2、Storage的l 阅读全文
摘要:
有一道经典的字符串处理的问题,统计一个字符串中每个字符出现的次数。 用es6的Array.reduce()函数配合“...”扩展符号可以更方便的处理该问题。 结果: 阅读全文
摘要:
基本原则如下: 数组的元素是按次序排列的,变量的取值由它的位置决定; 对象的属性没有次序,变量必须与属性同名,才能取到正确的值。 数组的解构赋值: 对象的解构赋值: 但是对象的解构赋值,允许给赋值的变量重命名。 变量的解构赋值用途很多。 (1)交换变量的值 写法不仅简洁,而且易读,语义非常清晰 (2 阅读全文
摘要:
众所周知,vue-router有两种模式,hash模式和history模式,这里来谈谈两者的区别。 hash模式 hash模式背后的原理是onhashchange事件,可以在window对象上监听这个事件: 上面的代码可以通过改变hash来改变页面字体颜色,虽然没什么用,但是一定程度上说明了原理。 阅读全文
摘要:
1、首先看一个判断题:null和undefined 是否相等 console.log(null==undefined)//true console.log(null undefined)//false 观察可以发现:null和undefined 两者相等,但是当两者做全等比较时,两者又不等。 原因: 阅读全文