500个企点qq大概多少钱,北京做网站优化,做网站先得注册域名吗,网站如何做谷歌优化本篇全是重点#xff0c;捡常用的怼#xff0c;数值的扩展比较少#xff0c;所以和函数放一起#xff1a; 一#xff0c;数值 1#xff0c;Number.EPSILON#xff1a;用来检测浮点数的计算#xff0c;如果误差小于这个#xff0c;就无误 2#xff0c;Math.trunc()捡常用的怼数值的扩展比较少所以和函数放一起 一数值 1Number.EPSILON用来检测浮点数的计算如果误差小于这个就无误 2Math.trunc()取整去除小数部分如果是-0.123去除之后会留下-0这个要注意 其他感觉用的都不多就这两个。 二函数 1es6引入了rest参数...变量名它跟arguments的区别它是真正的数组 2箭头函数 函数体内的this对象就是定义时所在的对象不是使用时所在的对象 不可以当做构造函数即不可以使用new 不可以使用arguments对象在函数体内不存在如果要用可以用rest参数 不可以使用yield命令不能用作Generator函数。 3尾调用 指某个函数的最后一步调用另一个函数注意这里是只return一个函数而不是什么表达式之类的 function f(x) {return g(x);
} 尾调用优化 函数在调用的时候会形成一个“调用帧”在内存中形成一个“调用记录”保存调用位置和内部变量如果此时在函数A中再调一个函数B那么在A的调用帧的上方就会形成一个B的调用帧只有当B函数执行结束返回到A的时候B的调用帧才会消失也就是说当B在执行的时候只要B函数的下方还有程序要执行A的调用帧就一直占用着因为要等B执行完成后继续执行同样如果此时B里面还有一个函数C那么执行函数C的时候B的调用帧也要被占着A的也是那这样内存就会有很大的损耗形成了一个“调用栈”。 如果函数B是函数A的最后一步调用呢那么执行函数B的时候A的调用帧就会自动消失因为B就是它的最后一步函数A不需要再记录它的调用位置和内部变量了所以只留下了B函数的调用帧同样如果C函数也是B函数的最后一步那么调用C函数的时候B函数的调用帧也会消失原因同上所以这极大地减少了内存的占用。 综上“尾调用优化”本质就是只保留内层函数的调用帧每次执行函数的时候调用帧只有一个大大节省内存。 比如递归的时候非常消耗内存因为需要同时保存着N多个调用帧所以很容易发生“栈溢出”的错误。但如果改成“尾递归”调用帧只有一个所以不会发生“栈溢出”的问题。 function factorial(n) {if (n1) return 1;return n * fatorial(n-1);
}// n如果过大就容易栈溢出现在改成尾递归function factorial(n, total) {if (n1) return total;return factorial(n-1, n*total);
}// 调用帧永远只有一个极大减少内存占用三数组 1扩展运算符三个点...就是rest参数的逆运算将一个数组转为用逗号分隔的参数序列。 2Array.from()用于将两类对象转换成数组类数组对象比如NodeList和arguments和可遍历对象Iterator Object它还可以接受第二个参数作用类似于map对数组的每一项进行操作然后将结果返回到数组。 3Array.of()用于将一组值转换成数组括号里面传的参数组成的数组哪怕只有一个数也是一个元素的数组在es5里面Array方法如果只传一个数字默认就是数组的长度但是Array.of()不一样传一个数字就表示一个数字的数组。 4find()找出第一个符合条件的数组成员参数是回调函数这里非常容易写成元素要注意写条件没有则返回undefined用法如下 [1, 4, -5, 10].find((n) n0)// -5[1, 5, 10, 15].find(function(value, index, arr) {return value 9
})// 105findIndex()找出第一个符合条件的数组成员的位置参数也是回调函数没有则返回-1用法同上 所以如果要使用数组查找某个元素是否存在还是用es7的includes()比较好但是要注意使用babel的transform-runtime这个plugin 6数组实例的entries()keys()values() 返回的都是一个Iterator Object也就是说可以用iterator object.next().value来依次访问 entries是对键值对的遍历keys是对键的遍历values是对值的遍历 注意不要和Object的三个同名方法搞混了那个是es7的 7数组实例的includes()这里我写错地方了这个是es7的 数组是否包含某个元素有就返回true没有就false可以传NaN来检测NaN。es5的indexOf无法检测NaN 8数组的空位 es5对数组的空位处理 forEachfiltereverysome都会跳过空位 map会跳过空位但是会保留这个值 join和toString会将空位设为undefined而undefined和null会被处理成字符串 es6则是明确将空位转为undefined所以尽量不要留空位 转载于:https://www.cnblogs.com/yanchenyu/p/7884284.html