手机随时阅读
新人专享大礼包¥24
JavaScript 高级程序设计第 4 版(后简称高程4),相较于第 3 版,增加了 ES6 至 ES10 的全新内容,删除了旧版过时的内容,并在原有基础上充实了更加翔实的内容。中文译版于 2020 年发售,妥妥的“新鲜出炉”,你要是问本瓜:当今学 JavaScript 哪家强,我只能说:红宝书第 4 版最在行。于是乎,借着更文契机,本瓜将开启一个小系列,带你重看一遍高级程序设计4(先前只是跳着
前文梳理第一篇为什么要进行函数式编程?—— 一切只是为了代码更加可读!!开发人员喜欢【显式】输入输出而不是【隐式】输入输出,要明白何为显式,何为隐式!!一个函数如果可以接受或返回一个甚至多个函数,它被叫做高阶函数。闭包是最强大的高阶函数!!第二篇讲了重要的两个概念:偏函数、柯里化函数组装是函数式编程最重要的实现方式!而熟练运用偏函数、柯里化,以及它们的变体,是函数组装的基础。偏函数表现形
本篇会将谈谈函数编程中一个很重要的细节 —— “副作用”。维基上关于副作用的解释:函数内部有隐式(Implicit)的数据流,这种情况叫做副作用(Side Effect)。咱们前文也提到过:开发人员喜欢显式输入输出而不是隐式输入输出。所以我们将细致的看看副作用中【隐式】和【显式】的区别!何为副作用?先来个小例子作开胃菜:// 片段 1function fo
本篇将着重介绍 函数的输入,它是 JS 轻量函数式编程的基础之基础,重要之重要!!!偏函数传参现状我们经常会写出这样的代码:function ajax(url,data,callback) { // ..}function getPerson(data,cb) { ajax( "http://some.api/person", data, cb );}ajax 函
在前面的文章,我们谈了基础之基础,重要之重要——“偏函数”,偏函数通过函数封装,实现了减少传参数量的目的,解决了手动指定实参的麻烦。更具重要意义的是:当函数只有一个形参时,我们能够比较容易地组合它们。这种单元函数,便于进行后续的组合函数;没错,本篇就是谈关于 “组合函数”。它是函数编程的重中之重之重之重重重!组合函数含义函数编程就像拼乐高!乐高有各式各样的零部件,我们将它们组装拼接,拼成
作为一个优秀的 Web 前端开发者,如果不懂点用户体验设计(UED),任由 UI 搁那指指点点,那可真叫是:知三晓五 —— 就是不懂事(四)了!别方,抱紧我!本篇将为大家带来最酷的网页设计指南!闲言少叙,直接奥力给!新拟态新拟态,英文叫作:Neumorphism,是由「New Skeuomorphism」组合的新名词,也就是新型态的拟物化风格设计,中文称作新拟态、同化,也有设计师称其为Soft U
即使都是窗口滑动,但“怎么滑”,滑动后“怎么做”,里面就存在很大的解题思路的差异!本篇继续来探索、发现、记录这个差异~ 当然也不能忘了解题中的感受分享~滑动窗口中位数题目:给你一个数组 nums,有一个长度为 k 的窗口从最左端滑动到最右端。窗口中有 k 个数,每次窗口向右移动 1 位。你的任务是找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组成的数组。中位数:中位数是有序序列最中间的
小引JavaScript 技能持有者一定有问过这个问题:JavaScript 是面向对象语言吗?你期望得到的答案应该为:“是” 或 “不是”。但是可惜,你得不到这样简单的答案!你大概了解一通之后,你会被告知:JavaScript 不是纯粹的面向对象语言!wtf!为什么是不纯粹?能不能纯粹一点?!我们喜欢纯粹,不喜欢混沌!......实际上,死扣定义真的没太必要。定义背后的故事才是最重要的!看完本篇
本瓜一直觉得 Promise 就是咱 JS 人的浪漫,没错,Promise 天天见,但或许越熟悉越陌生,我们在一直用的过程中会形成一些定式,这导致难免会漏掉一些定式以外的要点;本篇带来 Promise 5 个避免,以供自查!!1. 避免回调地狱啥?Promise 就是来解决回调地狱的,如果还写成这个样子,那一切还有什么意义?userLogin('user').then(function(user)
我们经常会遇到这样的需求,在循环中使用异步请求,而 ES6 的 async/await 是我们让异步编程更简单的利剑?。本篇总结了 5 种在循环中使用 async/await 的方法(代码干货都能在浏览器控制台自测):打勾的方法 ✔:表示在循环中每个异步请求是按照次序来执行的,我们简称为“串行”打叉的方法 ❌ :表示只借助循环执行所有异步请求,不保证次序,我们简称为“并行”按需
本篇介绍 10 点如何从实战中学习突破 Vue JS 3 的新特性,细细看完,一定会有收获~初始化挂载在 Vue2 中,我们在 main.js 通常这样进行初始化挂载:new Vue({ render: h => h(App), components: { App }}).$mount('#app')在 Vue3 中,调整为这样:import { createApp } from 'v
前言开宗明义,本瓜深知汝之痛点:前端面试知识点太杂,卿总为了面试而面试,忘了记,记了又忘,循环往复,为此叫苦不迭。来,让本瓜带领各位都稍稍回顾一下,自己曾经在学生时代记忆元素周期表的光辉岁月。氢、氦、锂、铍、硼、碳、氮、氧、氟、氖、钠、镁、铝、硅、磷、硫、氯、氩、钾、钙、钪、钛、钒、铬、猛、铁、钴、镍、铜、锌......咱当初记这前三十位元素,是死记硬背的吗?答案是否定的,机智的我们用到了&nbs
最近由于要做测评,遂整理算法设计与分析这一块的内容,复习的同时,与大家分享交流~喂!算法!逃不掉的!All Right?分治法分治法是建基于多项分支递归的一种很重要的算法范型。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。比较典型的有:排序算法(归并排序、快速排序)、傅立叶变换(快速傅立叶变换)等
从高阶Observable 的概念与RxJS Map 操作符来介绍四大让人却步的Map 系列操作符— MergeMap、ConcatMap、SwitchMap以及ExhaustMap。先从简单的Map 操作符开始,以下面的程式码举例:Rx.Observable .interval(1000) .take(5) .map(item => i
前言仅将自己的理解做整理、归类并结合实际遇到的问题做记录,更推荐阅读 ECMAScript 6 入门。扩展篇数组的扩展解构赋值“ES6 中允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)”作用:可以快速取得数组或对象当中的元素或属性,而无需使用arr[x]或者obj[key]等传统方式进行赋值let [a,b,c] = [1,2,
正视布局开篇想先问你一个问题:“你认为你目前所在 Vue 项目中的 layouts 设置有什么问题吗?”你可能会回答:“没有啥问题啊。因为不就是简单的在外层套一个 Layout 组件吗?”我想一定类似这样吧:<template> <MyLayout> <h1>Here is my page content</h1> </MyLayou
引言一朋友刚面了腾讯音乐(TME)前端开发岗位(两年经验),本瓜撰文记之。以期同各面试人分享交流~自评面试难度:?????话不多说,直接看题!我相信一定有你想要的!注:好的面试流程通常以聊天的方式进行,题目是连续的。此处抽出核心四问,其间附带的小问题一笔带过,不做赘述。页面通信❝问题一:从页面 A 打开一个新页面 B,B 页面关闭(包括意外崩溃),如何通知 A 页面?炸看这一题,以为讲的是 htm
引言如果你了解 npmtrends.com,你可以在上面轻松获取以下这个截图信息。图示 TypeScript 的下载量在 5 年内呈现指数级增长。如果咱按照买基金股票抄底思路,学习 TypeScript 的最佳时间或许就是几年前。但是谁都无法回到过去,别灰心,还有另一个最佳时间入手 TS,那便是现在。若你是 VUE 技能拥有者,则更是不容错过,很多项目都正在或已在使用 TypeS
?嵌套毛毛虫我猜你一定见过这样的代码:if(condition1 === A1){ if(condition2 === A2){ ... }else if(condition2 === B2){ ... }else if(condition2 === C2){ ... }else{ ... }}esle if(c
map 操作想必大家一定不陌生:const { of } = Rx;const { map } = RxOperators;const namesObservable = of('A', 'B');namesObservable.pipe( map(name => `map ${name}`))namesObservable .subscribe(result => consol
我们目前的世界仍是基于 P ≠ NP,所以有理由相信:只要我们把牌洗的足够乱,幸运女神或许就会降临。(生活就像英雄联盟,运气游戏而已~)本篇带来的就是:如何把牌洗的足够乱的 洗牌算法 !从青铜到王者,面试和实战都用得到! 点赞收藏 ✨闲言少叙,直接奥力给!!青铜洗牌 ?题目:给你一副崭新的扑克牌(54 张),你如何 “洗乱” 它??咱青铜玩家通常很
你问我什么是 JS 函数式编程实战?我只能说本篇完全就是出自工作中的实战!!!
前言小叙FPS 全称:Frames per second,即 【每秒帧数】 的意思。 通常来讲,当动画的每秒帧数低于 12 (即 12 FPS 以下)时,我们的大脑就能快速从动画中区分出一些静止的图片,所以此时的动画并不是无缝动画。一旦播放速率(每秒帧数)达到 16-24 FPS 时,大脑就会认为这些画面是连续移动的场景,看起来就是影片的效果了(大部分数字电影拍摄是每秒 24 帧)。 所以,
小序在 6 月更文中零零散散讲了 JS 的对象创建和对象继承,有工友对此还是表示疑惑,要注意:这是两个不同但又相关的东西,千万别搞混了!这些文章是:蓦然回首,“工厂、构造、原型”设计模式,正在灯火阑珊处JS精粹,原型链继承和构造函数继承的 “毛病”“工厂、构造、原型” 设计模式与 JS 继承JS 高级程序设计 4:class 继承的重点JS class 并不只是
咱就是说,经常看技术博客的同学应该熟悉 Eric Elliott 这位老哥,他致力于 JavaScript 编程、区块链领域的技术博文输出,在 medium 平台上有 10w+ 粉丝。本瓜发现,对于 JS 编程,这老哥有以下 2 个特点:青睐函数式编程;排斥 class 类继承,青睐基于原型继承;对于技术偏好,需辩证的看待。本篇就从他原本 10 个基础面试问题中抽取其中 4 个还不错的问题
题:题目来源:LeetBook /算法面试题汇总编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。 每列的元素从上到下升序排列。示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,1
突一突 LeetBook 列表/算法面试题汇总冲冲冲~~题目:### 多数元素给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1:输入: nums = [3,2,3]输出: 3示例 2:输入:
突一突 LeetBook 列表/算法面试题汇总冲冲冲~~题目:### 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解:第一个反应用 map 来解,时间复杂度
在很早以前,写过一篇文章 “类”设计模式和“原型”设计模式——“复制”和“委托”的差异 ,大致意思就是说:代码复用,也就是继承、重写,有两种思路:1. 面向对象的类继承;2. 基于 JavaScript 原型链的原型继承;前者的主要特点是:复制,通俗来说就是把变量、属性再复制一份,后者的主要特点是:委托,通过属性的查找来实现的。后来呢,深入了解 JavaScript 高级程序设计中的继承,包括构造
Copyright © 2005-2022 51CTO.COM 版权所有 京ICP证060544号