![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
js
文章平均质量分 90
js相关知识
小马哥m
Nothing is impossible
展开
-
数组reduce高级用法实践
作者:JowayYoung仓库:Github、CodePen博客:官网、掘金、思否、知乎公众号:IQ前端特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者授权前言reduce作为ES5新增的常规数组方法之一,对比forEach、filter和map,在实际使用上好像有些被忽略,发现身边的人极少使用它,导致这个如此强大的方法被逐渐埋没。如果经常使用reduce,怎么可能放过如此好用的它呢!我还是得把他从尘土中取出来擦干净,奉上它的高级用法给大家。一个如此好用的方法不应...转载 2021-06-04 15:54:59 · 380 阅读 · 0 评论 -
ES6 尾调用和尾递归优化
尾调用优化尾调用之所以与其他调用不同,就在于它的特殊的调用位置。我们知道,函数调用会在内存形成一个“调用记录”,又称“调用帧”(call frame),保存调用位置和内部变量等信息。如果在函数A的内部调用函数B,那么在A的调用帧上方,还会形成一个B的调用帧。等到B运行结束,将结果返回到A,B的调用帧才会消失。如果函数B内部还调用函数C,那就还有一个C的调用帧,以此类推。所有的调用帧,就形成一个“调用栈”(call stack)。尾调用由于是函数的最后一步操作,所以不需要保留外层函数的调用帧,因为转载 2021-06-03 11:30:06 · 490 阅读 · 0 评论 -
浅谈函数柯里化
关于函数柯里化的定义:在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。 这段话听起来可能有一些抽象,但是如果用实际例子来解释可能会帮助我们更好地理解何为函数柯里化。看看下面这个问题,是一道前端面试中常考的题:如何实现add(2)(3)(4) = 9 当我第一次看到这个题目的时候我就在思考,add(2)后面为什么还能带(3)(4)呢?是不是因为add(2)返回的是一个函数,所原创 2020-06-23 17:51:55 · 220 阅读 · 0 评论 -
js位运算相关内容
位运算是直接进行二进制运算,所以位运算的执行效率是更高的,可以在项目中优先使用原创 2020-05-07 19:08:56 · 100 阅读 · 0 评论 -
获取对象拥有属性的方法及区别---for in、Object.hasOwnProperty、Object.getOwnPropertyNames、Object.keys
获取对象属性有好多种方法,每种方法也都有区别,下面具体说一下: const obj = { name: 'mj', age: 16, greet () { console.log('Hello ' + this.name) } } Object.prototype.printAge = function () { console....原创 2019-11-29 17:40:34 · 342 阅读 · 0 评论 -
深入学习js数据类型的转换规则
js中的数据类型js中共有八种内置数据类型,包括基本类型和对象类型。基本类型基本类型分为以下七种:string(字符串) boolean(布尔值) number(数字) BigInt(大于的整数) symbol(符号) null(空值) undefined(未定义)注意: string、number、boolean、null、undefined这...原创 2019-11-25 18:49:48 · 176 阅读 · 0 评论 -
LHS 和 RHS---你所不知道的JavaScript
目录1、LHS(Left Hand Side)和RHS(Right Hand Side)2、实例详解3、总结变量的赋值操作会执行两个动作, 首先编译器会在当前作用域中声明一个变量(如果之前没有声明过), 然后在运行时引擎会在作用域中查找该变量, 如果能够找到就会对它赋值。----《你所不知道的JavaScript(上)》P7而要讲的 LHS 和 RHS 就是上面说的对变...原创 2019-10-30 14:49:43 · 516 阅读 · 0 评论 -
js将秒转换为对应的时间字符串
将秒转换为对应的时间字符串,每个条件都return,可以自定义返回需要的时间/** * @param {Number|String} second 秒 * @returns {String} 转换后时间字符串 */const transformTime = (second = 0) => { if(isNaN(parseInt(second))) return; se...原创 2019-10-26 16:56:45 · 548 阅读 · 0 评论 -
彻底吃透 JavaScript 执行机制
执行 & 运行 首先我们需要声明下,JavaScript 的执行和运行是两个不同概念的,执行,一般依赖于环境,比如 node、浏览器、Ringo 等, JavaScript 在不同环境下的执行机制可能并不相同。而今天我们要讨论的 Event Loop 就是 JavaScript 的一种执行方式。所以下文我们还会梳理 node 的执行方式。而运行呢,是指JavaScript 的解析引擎。这...转载 2019-10-24 19:11:45 · 175 阅读 · 0 评论 -
手动实现new操作符
new操作符都做了什么function Person(name) { this.name = name}Person.prototype.sayName = function () { console.log(this.name)}const p = new Person('mj');console.log(p.name) // 'mj'p.sayName() // 'm...原创 2019-10-24 17:57:17 · 396 阅读 · 0 评论 -
从面向对象设计角度,全面解读——JS中的函数与对象、Object与Function、以及原型链与继承
本文,将会抛开__proto__的存在,转而从JS语言面向对象设计的角度,去全面解读函数与对象、Object与Function、以及原型链与继承。主题目录如下:类与对象的概念JS中的对象JS中的objectJS中的函数JS中的函数与objectJS中的对象与native codeJS函数的newJS函数的prototypeJS内置函数的命名JS中的原型链JS中的继承JS中的instanceofJS...转载 2019-10-18 10:53:43 · 188 阅读 · 3 评论 -
js常用的开发技巧
目录1.获取查询字符串参数2.数组里面的数据类型转换3.避免对象被改变4.数组去重5.判断数据类型6.遍历类数组对象1.获取查询字符串参数let params = "name=qwe&id=12";let searchParams = new URLSearchParams(params);for (let itemof searchParams)...原创 2019-10-17 16:11:44 · 281 阅读 · 0 评论