摘要: 1. 添加属性 复制对象的同时,为其添加新的属性。 例子中复制了user对象到userWithPass,并添加了 password 属性。 const user = { id: 110, name: 'Kayson Li'} const userWithPass = { ...user, passw 阅读全文
posted @ 2020-10-20 17:18 浅笑· 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 转Boolean类型 这个较为常用。 !!'a'//true 通过两个取反,可以强制转换为Boolean类型。 转Number类型 String转化为Number;日期输出时间戳。 +'45'//45 +new Date//13位时间戳 会自动转化为Number类型的。日期取时间戳不用new Dat 阅读全文
posted @ 2020-10-20 17:16 浅笑· 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 1.异步编程样例 样例: // 等待执行函数 function sleep(timeout) { return new Promise((resolve) => { setTimeout(resolve, timeout) }) } // 异步函数 async function test() { c 阅读全文
posted @ 2020-10-20 17:14 浅笑· 阅读(214) 评论(0) 推荐(0) 编辑
摘要: node中间件就是封装在程序中处理http请求的功能。node中间件是在管道中执行。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 中间件为主要的逻辑业务所服务,可分为:应用级中间件、路由级中间件、内置中间件、第三方中间件、错误级中间件。 1、应用级中间件 每一个中间件就是调用 阅读全文
posted @ 2020-10-20 17:12 浅笑· 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 1. Map 接受任何类型的键 如前所述,如果对象的键不是 string 或 symbol,JS 将隐式地将其转换为字符串。 幸运的是,map 的键类型没有问题 const numbersMap = new Map(); numbersMap.set(1, 'one'); numbersMap.se 阅读全文
posted @ 2020-10-20 17:11 浅笑· 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 一、模块化概念将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起;块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信。 二、模块化作用为什么要用模块化的JavaScript?因为在实际的开发过程中,经常会遇到变量、函数、对象等名字的冲突,这样就 阅读全文
posted @ 2020-10-20 17:10 浅笑· 阅读(1215) 评论(0) 推荐(1) 编辑
摘要: 一、执行上下文是什么代码运行是在一定的环境之中运行的,这个运行环境我们就成为执行环境,也就是执行上下文,按照执行环境不同,我们可以分为三类:全局执行环境:代码首次执行时候的默认环境函数执行环境:每当执行流程进入到一个函数体内部的时候Eval执行环境:当eval函数内部的文本执行的时候 二、执行上下文 阅读全文
posted @ 2020-10-20 17:09 浅笑· 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 概述 <canvas>元素用于生成图像。它本身就像一个画布,JavaScript 通过操作它的 API,在上面生成图像。它的底层是一个个像素,基本上<canvas>是一个可以用 JavaScript 操作的位图(bitmap)。 它与 SVG 图像的区别在于,<canvas>是脚本调用各种方法生成图 阅读全文
posted @ 2020-10-20 17:07 浅笑· 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 最初使用回调函数 ​ 由于最初j s官方没有明确的规范,各种第三方库中封装的异步函数中传的回调函数中的参数没有明确的规范, 没有明确各个参数的意义, 不便于使用。 ​ 但是node中有明确的规范 ​ node中的的回调模式: 1. 所有回调函数必须有两个参数,第一个参数表示错误,第二个参数表示结果2 阅读全文
posted @ 2020-10-20 17:04 浅笑· 阅读(886) 评论(0) 推荐(0) 编辑
摘要: es6新增了一种从数组或者对象中获取指定元素的方式,这种方式就是我们今天要说的解构。 先来说说数组的解构: 在有解构之前呢,我们获取数组中的指定元素通常是根据索引去做的: const arr = [1, 2, 3]; const a = arr[1]; 有了解构之后呢,我们便可以使用如下方式快速的去 阅读全文
posted @ 2020-10-20 17:03 浅笑· 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 介绍 JavaScript 是一个强大的面向对象编程语言,但是,并不像传统的编程语言,它采用一个以原型为基础的OOP模型,致使它的语法让大多数开发人员看不懂。另外,JavaScript 也把函数作为首要的对象,这可能会给不够熟悉这门语言的开发人员造成更大的困惑。那就是我们决定放在前面作为一个简短前言 阅读全文
posted @ 2020-10-20 17:02 浅笑· 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 在 TypeScript 中使用联合类型时,往往会碰到这种尴尬的情况: interface Bird { // 独有方法 fly(); // 共有方法 layEggs(); } interface Fish { // 独有方法 swim(); // 共有方法 layEggs(); } functio 阅读全文
posted @ 2020-10-20 17:01 浅笑· 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 从浏览器控制台到运行 Node.js 的终端,我们到处都会看到错误。本文的重点是概述我们在 js 开发过程中可能遇到的错误类型。 提示:良好的错误提示会导致快速而无痛的发展经历与缓慢而痛苦的发展经历之间的区别。在编写可重用的代码时,请确保自己在编写清晰易懂的错误处理代码。 1. RangeError 阅读全文
posted @ 2020-10-20 16:59 浅笑· 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 表单校验 Web项目中,登录,注册等等功能都需要表单提交,当把用户的数据提交给后台之前,前端一般要做一些力所能及的校验,比如是否填写,填写的长度,密码是否符合规范等等,前端校验可以避免提交不合规范的表单。 假如我们有一个表单,校验逻辑如下: 用户名不为空 密码长度不低于6位 手机号符合格式 未使用策 阅读全文
posted @ 2020-10-20 16:58 浅笑· 阅读(151) 评论(0) 推荐(0) 编辑
摘要: Node可以在不新增额外线程的情况下,依然可以对任务进行并发处理 —— Node.js是单线程的。它通过事件循环(event loop)来实现并发操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。 node单线程实现高并发原理 众所周知nodejs是单线程 阅读全文
posted @ 2020-10-20 16:57 浅笑· 阅读(9374) 评论(0) 推荐(0) 编辑
摘要: 全局对象 在浏览器JS中,通常window是全局对象,而nodejs中的全局对象是global,所有全局变量都是global对象的属性。 在nodejs中能够直接访问到的对象通常都是global的属性,如console、 process等 全局对象与全局变量 global最根本的作用是作为全局变量的 阅读全文
posted @ 2020-10-20 16:55 浅笑· 阅读(2306) 评论(0) 推荐(0) 编辑
摘要: 查找编程代码中的错误被称为代码调试。调试并不简单。但幸运地是,所有现代浏览器都有内置的调试器。内置的调试器可打开或关闭,强制将错误报告给用户。 通过调试器,您也可以设置断点(代码执行被中断的位置),并在代码执行时检查变量。通常通过 F12 键启动浏览器中的调试器,然后在调试器菜单中选择“控制台”。 阅读全文
posted @ 2020-10-20 16:53 浅笑· 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 事件循环 三个概念 调用栈,先进后出 宏任务队列(存放宏任务的,队列先进先出) 微任务队列 异步任务又分为宏任务和微任务 宏任务,macrotask,也叫tasks setTimeout setInterval setImmediate (Node独有) requestAnimationFrame 阅读全文
posted @ 2020-10-20 16:51 浅笑· 阅读(821) 评论(0) 推荐(0) 编辑
摘要: 一、浅拷贝 1、Object.assign(target,source,source...) a、可支持多个对象复制 b、如果source和target属性相同 source会复制target的属性 c、target只能为Object对象 var obj = {a:1,b:2} undefined 阅读全文
posted @ 2020-10-20 16:49 浅笑· 阅读(881) 评论(0) 推荐(0) 编辑
摘要: 带有if的代码简化 function validation(customer) { if (!customer.email) { return error('email is require') } else if (!customer.login) { return error('login is 阅读全文
posted @ 2020-10-20 16:48 浅笑· 阅读(113) 评论(0) 推荐(0) 编辑