
笔记
不愿透露姓名的余菜鸟
山不向我走来,我便向山靠去
展开
-
(JS)节流与防抖
节流(throttle) function throttle(fn, delay = 500) { if ((typeof fn) !== "function") { throw new Error(`${fn} not a function,you hvae to pass in a function `); } if ((typeof delay) !== "number") { throw new Err原创 2020-11-26 21:05:59 · 93 阅读 · 0 评论 -
(JS)闭包
什么是闭包?定义:闭包就是一个能调用另一个函数的变量的函数。 function closure() { count = 1; return function() { return count++; }}闭包的作用在全局作用域中能访问局部变量让局部变量一直保存在内存中闭包缺点由于变量会长期保存在内存中,所以会增大内存使用量,如果使用不当,可能会造成内存泄漏。变量或参数不会被JS垃圾回收机制清除...原创 2020-10-25 13:48:28 · 78 阅读 · 0 评论 -
(JS)如何修改函数名不影响递归调用
什么是递归?一种特殊的嵌套调用函数自己调用自己或者调用其他函数后再次调用自己只要是函数之间产生循环一定是递归调用以斐波拉契数列为例斐波拉契数列:1,1,2,3,5,8,13,21,34…斐波拉契数列函数:非递归: function fibonacci(n) { let a = 1, b = 1, temp = 0; if(n<2) { return 1; } for (var i = 3; i &.原创 2020-10-24 16:09:01 · 832 阅读 · 0 评论 -
(JS)数组去除重复
使用new Set()var arr = [1,2,3,4,5,5,4,3,2,11,3,22,11,11,22]; let c = new Set(arr); new Set()方法可以将所有不重复的值添加到新的Set中,然后返回使用fliter()方法var arr = [1,2,3,4,5,5,4,3,2,11,3,22,11,11,22];let x = arr.filter(function(val,index),array) { return array.index.原创 2020-10-22 19:34:07 · 355 阅读 · 0 评论 -
(Vue)自定义指令
全局自定义指令Vue.directive(name,options)局部自定义指令directives:{name:{inserted:function() {}}}应用在模板上使用v-name钩子函数bind:在执行第一次绑定时调用,只调用一次inserted:元素插入到父节点时调用update:所有组件的VNode更新时调用,可能在子VNode更新前调用componentUpdated:指令所在组件的VNode及其子VNode全部更新后调用unbind:只调用一次,指令与原创 2020-08-28 15:29:59 · 109 阅读 · 0 评论 -
(Vue)mixin使用及注意问题
mixin使用时需要创建一个对象,对象内部可以使用与组件相同的属性及方法。注意:mixin使用时,组件数据高于mixin,组件数据和mixin数据如果有重复,组件数据将会覆盖mixin数据mixin内的方法会与组件自身钩子函数合并为一个数组,并且mixin的方法会在组件自身方法之前执行在methods,components,directives对象方法中,如果有相同的方法,则会用组件自身的方法覆盖mixin方法。并在最后合并为同一个对象...原创 2020-08-28 14:26:19 · 1157 阅读 · 0 评论 -
(JS)isNaN()方法判断undefined为true的原因
使用isNaN()判断是不是NaN时,此方法会使用Number()方法做一个转换,任何非数字都会被强制类型转换,undefined被转换后为NaN,所以显示trueconsole.log(isNaN(undefined)) //trueisNaN()转换时除了null和数组类型会被转为数字0之外,其余非数字类型的皆会被转为NaN字符串console.log(isNaN("qigeyu")) //true对象console.log(isNaN({})) //true...原创 2020-08-13 18:02:15 · 1643 阅读 · 0 评论 -
(JS)数组排平(flat)
如果只有一层嵌套数组情况Array.prototype.concat.apply([], arr)或[].concat(arr)或Array.prototype.concat.call([], arr[0],arr[1]...)如果有多层嵌套function flat(arr) { //判断是否有多层数组 const isDeep = arr.some(item => { return item instanceof Array; }.原创 2020-08-10 18:45:12 · 319 阅读 · 0 评论 -
(JS)捕获错误(异常)
使用try …cathtry{ //todo}catch(ex) { throw new Error(ex);}finally { //todo}使用window捕获 window.onerror = function(message, source, linenum, colnum, error) { //todo // 对于跨域的JS,不会有详细报错信息 // 对于压缩的JS,需要配合sourceMap反查到未压缩代码行}...原创 2020-08-10 17:25:56 · 381 阅读 · 0 评论 -
(JS)数组方法:slice和splice
Array.slice(start,end)拷贝数组,如果不指定start和end则表示拷贝整个数组,如果只指定start则拷贝从start到数组末尾,如果start和end都指定,则拷贝start到end-1,。此操作不会改变源数组let arr = [1,2,3,4];console.log(arr.slice(-1)) //[4]当start<end时,会返回一个空数组,当start为负数时,从数组末尾开始计算2. Array.splice(start,count,value).原创 2020-08-09 18:23:34 · 161 阅读 · 0 评论 -
(js)用一条语句判断整数是不是2的整数次方
(js)用一条语句判断整数是不是2的整数次方let n = 16;function f(n) { return n===0?false:(n&(n-1))===0;}let x = f(n);console.log(x)true原创 2020-07-24 09:59:20 · 437 阅读 · 0 评论 -
(js)二进制中1的个数(三种解法)
(js)二进制中1的个数let n = 928;// 挪动1的位置console.log(n.toString(2));let count = 0;for (let i = 0; i < 32; i++) { if ((n & (1 << i)) === (1 << i)) { count++; }}console.log(count);// 挪动本身count = 0;for (let i = 0; i < 32; i++) { i原创 2020-07-24 09:55:44 · 1063 阅读 · 1 评论 -
(JS)找出数组中唯一落单的数
(JS)找出数组中唯一落单的数var arr=[1,1,2,3,5,6,3,2,5];let x1=0;for(let i = 0;i<arr.length;i++) { x1=x1^arr[i];}console.log(x1)x1=6原创 2020-07-23 23:01:59 · 535 阅读 · 0 评论 -
JS代码)不使用辅助空间找出数组中唯一成对的数
(JS代码)不使用辅助空间找出数组中唯一成对的数// 取随机数function getRandom(l) { return parseInt(Math.random() * l);}function pairing() { // 新建一个长度位15的数组 var arr = new Array(15); // 向数组内添加元素 for (let i = 0; i < arr.length; i++) { arr[i] = i + 1; } // 数组末尾添加一个随机数 ar原创 2020-07-23 22:27:56 · 127 阅读 · 0 评论