1.typescript中,type:用来定义类型别名;
举例:type myType = String|Number|Boolean;
let student:myType = 'zyy';
let student:myType = 20;
let student:myType = true;
2.什么是纯函数?
概念:一个函数的返回结果只依赖其参数,并且执行过程中没有副作用
纯函数要满足以下三点:
1.相同输入总是会返回相同的输出。
2.不产生副作用。
3.不依赖于外部状态。
纯函数的关键是避免对外部状态的依赖和修改,以及确保相同的输入始终产生相同的输出。
3.什么是高阶函数,常见的举例。
概念:高阶函数是一个接收函数作为参数或将函数作为输出返回的函数
举例:map,reduce,filter,sort
4.给dom添加多个点击事件
dom.addEventListener(事件名称,func)
dom.addEventListener(事件名称,func)
dom.addEventListener(事件名称,func)
.......
5.数组sort()排序
默认使用UniCode排序,所以通常字母看a->z,数字看1->9
6.类似数组的对象,本质特征只有一个,那就是必须要有length属性;都可以通过Aarry.from()方法转成数组;
new_arr = Array.from(类似数组的对象)
常见的场景:获取的dom节点列表,普通函数的arguments对象
对于还没有部署该方法的浏览器,可以用Array.prototype.slice.call(xxx)方法替代
const toArray = (() =>
Array.from ? Array.from : obj => [].slice.call(obj)
)();
7.判断数据类型
1、typeof xxx
2、Object.prototype.toString.call(xxx)
8.快速构建一个长度100的,填充内容的数组
new Array(100).fill(x) ---- 结果为[x,x,x,...]
9.判断一个数组的某个位置是否有值
位置index in Array;存在值为true,不存在值为false
10.常用Math方法
(1)Math.abs(x):获取x的绝对值;
(2)Math.ceil(x):向上取整;
(3)Math.foolr(x):向下取整;
(4)Math.random():获取0-1内的伪随机数,包括0但是不包括1;
(5)Math.max(x1,x2,x3,...):返回最大值,其中参数必须得是number格式;
(6)Math.min(x1,x2,x3,...);返回最小值,其中参数必须得是number格式;
(7)Math.round(x):返回四舍五入后的整数;
(8)Math.trunc(x):返回一个数的整数部分;
// 获取min-max范围内的一个随机整数
function setRandom(min, max){
return Math.floor(Math.random()*(max - min) + min)
}
11.安全随机数扩展方法 window.crypto
var array = new Uint32Array(10);
window.crypto.getRandomValues(array);
12.箭头函数有几个使用注意点。
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。
(4)不可以使用yield命令,因此箭头函数不能用作Generator函数。
13.什么是尾调用,尾调用优化,尾递归
概念:指某个函数的最后一步是调用另一个函数。
function f(x){
return g(x);
}
尾调用不一定出现在函数尾部,只要是最后一步操作即可。
function f(x) {
if (x > 0) {
return m(x)
}
return n(x);
}
尾调用优化:函数的调用存在‘调用帧’,多个函数嵌套的情况会造成多个‘调用帧’存在,尾调用优化可以使只存在一个‘调用帧’,进而可以节省内存;
尾递归:函数调用自身,称为递归。如果尾调用自身,就称为尾递归。
递归非常耗费内存,因为需要同时保存成千上百个调用帧,很容易发生“栈溢出”错误(stack overflow)。但对于尾递归来说,由于只存在一个调用帧,所以永远不会发生“栈溢出”错误。
14.i++和++i的区别
一句话说明:当两者没有处于副作用时,效果一样; 当两者处于副作用时,i++会先执行副作用,再进行递增,++i会先进行递增,再执行副作用。