随笔分类 -  JavaScript

摘要:## 不使用括号调用函数 你希望一个特定的对象返回一个原始值时,可以使用 valueOf 方法。通常,你会将它与对象字面量一起使用,然后将你的对象与其他原始值进行加法或减法操作。 ```javascript let obj = { valueOf() { return 1 } } console.l 阅读全文
posted @ 2023-07-17 15:47 艾路 阅读(15) 评论(0) 推荐(0) 编辑
摘要:## 十六进制 十六进制,它只在字符串内部起作用,如果您尝试将其用作标识符,他们将失败。一个有趣的方面是,十六进制转义必须使用小写的 x,如果使用大写的 X,它将不会被视为十六进制转义,js 引擎将简单地将字符串处理为字面上的大写 X,后面跟着你指定的字符。 ```javascript '\x61' 阅读全文
posted @ 2023-07-14 16:07 艾路 阅读(13) 评论(0) 推荐(0) 编辑
摘要:## 冻结 如果我们希望避免程序员意外或故意修改对象的可能性,冻结对象是一个有效的解决方案。在对象被冻结之后,任何修改它的尝试都会静默失败。javascript 不会报告错误或抛出异常,但也不会修改对象。这种解决方案只有一个问题:冻结对象是一个浅层操作,它仅冻结属性本身,类似于 const 声明的作 阅读全文
posted @ 2023-06-28 10:40 艾路 阅读(7) 评论(0) 推荐(0) 编辑
摘要:## 管道和组合 管道和组合是一种技术,用于设置函数以便它们按顺序工作,使一个函数的输出称为下一个函数的输入。在 linux 中,执行一个命令并将其输出作为第二个命令的输入,而第二个命令的输出又成为第三个命令的输入,依此类推,这被称为管道。 ```javascript const markers = 阅读全文
posted @ 2023-06-19 10:04 艾路 阅读(8) 评论(0) 推荐(0) 编辑
摘要:## 一起柯里化 柯里化是将 m 元函数转换为一系列 m 个一元函数的过程,其中每个函数从左到右接收原始函数的一个参数。(第一个函数接收原始函数的第一个参数,并返回一个接收第二个参数的第二个函数,依此类推。)每个函数在调用时生成序列中的下一个函数,最后一个函数执行实际的计算。 柯里化的思想本身很简单 阅读全文
posted @ 2023-06-13 17:34 艾路 阅读(10) 评论(0) 推荐(0) 编辑
摘要:## 日志记录 我们可以写一个高阶函数,它以两个函数作为参数,并允许第一个函数只能执行一次,从那一点开始调用第二个函数。 ```javascript const onceAndAfter = (f, g) => { let toCall = f return (...args) => { let r 阅读全文
posted @ 2023-06-01 16:03 艾路 阅读(9) 评论(0) 推荐(0) 编辑
摘要:## 日志记录 在调试代码时,通常需要添加一些日志信息来查看函数是否被调用,使用了哪些参数,返回了什么等等。 ```javascript function someFunction(p1, p2, p3) { console.log('enter', p1, p2, p3) // do... // 阅读全文
posted @ 2023-05-31 16:11 艾路 阅读(9) 评论(0) 推荐(0) 编辑
摘要:我们将使用接下来的函数实现:让你更具有声明性,你会发现自己的关注点将转移到你需要什么,而不是如何做;繁琐的细节被隐藏在我们的函数内部。我们将不再编写一系列可能嵌套的 for 循环,而是专注于使用函数作为构建快来制定我们期望的结果。 使用 reduce()操作可以得到单个值;使用 map()可以得到一 阅读全文
posted @ 2023-05-30 16:52 艾路 阅读(14) 评论(0) 推荐(0) 编辑
摘要:Memoization:备忘录技术。由于纯函数对于给定的输入失踪产生相同的输出,所以可以缓存函数的结果,避免可能昂贵的重新计算。这个过程意味着只在第一次计算表达式并将结果缓存起来,供后续调用使用,称为备忘录技术。 斐波那契数列常用于此示例,因为它简单切隐藏了计算成本。当 n=0 时,fib(n)=0 阅读全文
posted @ 2023-05-29 14:16 艾路 阅读(9) 评论(0) 推荐(0) 编辑
摘要:防止 vue 自带的动画 css 覆盖你的动画效果,或者影响效果。可以添加:css="false"来阻止默认的 class. 通常,在第一次页面加载时会显示项目列表,由于元素已经在视图中,所以我们的动画不会起作用。为了触发动画,我们需要使用另一个过渡属性 appear,在页面最初渲染时立即触发动画。 阅读全文
posted @ 2023-05-29 09:42 艾路 阅读(8) 评论(0) 推荐(0) 编辑
摘要:// 存储副作用函数的桶 const bucket = new WeakMap() // 原始数据 export const listenInit = (data) => { return new Proxy(data, { // 拦截读取操作 get(target, key) { track(ta 阅读全文
posted @ 2023-01-31 10:14 艾路 阅读(35) 评论(0) 推荐(0) 编辑
摘要:内容不一定详实,但确实有一些收获。 var fun=function(){ console.log('1') } function fun(){ console.log('2') } fun() //1 js中重复命名方法,会执行后面命名的。但是假如一个方法用变量的方式命名,上述的情况会执行变量的。 阅读全文
posted @ 2021-09-06 09:38 艾路 阅读(30) 评论(0) 推荐(0) 编辑
摘要:以前,贴吧骗赞有个说法,快速点击两次可以赞两下哦,这个情况倒是可以发生的,就是将点赞信息提交了多次。就算后端帮助判断了不能点赞多次,将错误信息返回前台,频繁提示“不能多次点赞”看起来也是很Low。我们可以根据需求来使用下面几种方式让效果、性能都能完美实现。 防抖的原理是在规定触发时间内,多次点击,都 阅读全文
posted @ 2018-12-20 11:59 艾路 阅读(4941) 评论(1) 推荐(0) 编辑
摘要:我们可以使用push将元素追加到数组中。push接受可变数量的参数,我们可以一次推送多个元素。但是,如果我们传递一个数组来推送,它实际上会将该数组作为单个元素添加,而不是单独添加元素,我们最终得到一个数组内的数组。 concat可以合并数组,但它并不附加到现有数组,而是创建并返回一个新数组。 app 阅读全文
posted @ 2018-12-19 15:43 艾路 阅读(24921) 评论(0) 推荐(0) 编辑
摘要:v8引擎只在严格模式下支持let和const。这实际上意味着将来所有的变成都是针对严格模式的。 变量声明尽量使用const,let,var这种形式。 静态字符串一律使用单引号或反引号,不使用双引号。动态字符串使用反引号。(这样用在拼接字符串上,会少写很多代码。) 使用数组成员对变量赋值,优先使用解构 阅读全文
posted @ 2018-08-29 11:51 艾路 阅读(82) 评论(0) 推荐(0) 编辑
摘要:ES6允许直接写入变量和函数作为对象的属性和方法。这样的书写更加简洁。 ES6允许在对象中只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。 js语言定义对象的属性有两种方法。obj.foo=true;obj['a']=123;1直接用标识符作为属性名;2是用表达式作为属性名,这时要将表达 阅读全文
posted @ 2018-07-18 15:34 艾路 阅读(159) 评论(0) 推荐(0) 编辑
摘要:在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 x=x||'al'; 这种写法的缺点在于,如果参数赋值了,但是对应的布尔值为false,则赋值不起作用。空字符,结果也会改为默认值。 ES6允许为函数的参数设置默认值,直接写在参数定义的后面。ES6简洁许多,而且很自然。除了简洁,E 阅读全文
posted @ 2018-07-09 18:40 艾路 阅读(334) 评论(0) 推荐(0) 编辑
摘要:Array.from()方法用于将两类对象转为真正的数组:类似数组的对象和可遍历对象。 php有种返回json长成:let arr1={0:'1',1:'a',2:'c'};ES6可以直接写成let arr2=Array.from(arr1);//['1','a','c']。ES5可以写成 var 阅读全文
posted @ 2018-07-05 18:05 艾路 阅读(142) 评论(0) 推荐(0) 编辑
摘要:传统js只有indexOf方法来确定一个字符串是否包含在另一个字符串中。ES6又提供了3种新方法。 includes():返回布尔值,表示是否找到了参数字符串。 startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。 endsWith():返回布尔值,表示参数字符串是否在源字符串 阅读全文
posted @ 2018-07-04 18:26 艾路 阅读(413) 评论(0) 推荐(0) 编辑
摘要:ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。 var [a,b,c]=[1,2,3];可以从数组中提取值,按照位置的对应关系对变量赋值。本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。如果解构不成功,变量的值就等于undefi 阅读全文
posted @ 2018-07-04 14:58 艾路 阅读(861) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示