随笔分类 - javascript
摘要:在前端项目开发与生产的过程中,“cannot read property of undefined”是一个常见的错误。从不可知得到一个空数据问题在所难免。面对这种问题我们该怎么办呢? 针对于特定的业务和数据,前端即使预知数据不存在,也无法处理,任其崩溃即可。但大部分情况下,如果因为列表某条数据出现错
阅读全文
摘要:eslint 是很有名的 linter,地球上每一个 JavaScript 程序员都应该知道。 linter 是一种代码静态分析工具,它可以帮你找到代码中可能存在的错误与 bug,也能找出代码风格的问题,不过因为只是静态分析,对 js 这种动态类型的语言所能做的就比较有限了,毕竟在 js 中,变量的
阅读全文
摘要:一、需求描述 长度不定的一段文字,最多显示n行(比如3行),不超过n行正常显示;超过n行则在最后一行尾部显示“展开”或“查看全部”之类的按钮,点击按钮则展开显示全部内容,或者跳转到其它页面展示所有内容。 预期效果如下: 二、实现原理 纯css很难完美实现这个功能,所以还得借助js来实现,实现思路大体
阅读全文
摘要:记录一下怎样写出整洁规范的代码,用于共勉进步。对于什么是整洁的代码,书中给出了大师们的总结: Bjarne Stroustrup:优雅且高效;直截了当;减少依赖;只做好一件事Grady booch:简单直接Dave thomas:可读,可维护,单元测试Ron Jeffries:不要重复、单一职责,表
阅读全文
摘要:问题复现 一次扒某网站的前端代码,打开控制台要看Network,结果发现他们页面一打开控制台就不断的debugger,100ms一次,很影响看页面内容。 问题分析 每次在断点处停下来的时候页面都会跳到source这个tab页面,也能够看到他的debugger的代码,其实他的实现很简单,只有这一行代码
阅读全文
摘要:前言 在现在前端开发中,异步操作的频次已经越来越高了,特别对于数据接口请求和定时器的使用,使得我们不得不关注异步在业务中碰到的场景,以及对异步的优化。错误的异步处理可能会带来很多问题,诸如页面渲染、重复加载等问题。 下面我们就先简单的从 JavaScript 中有大致的哪几种异步类型为切入点,然后再
阅读全文
摘要:接口 例如我们这定义一个叫做printPost的函数,那这个函数可以接收一个文章对象参数post,然后在函数的内部去打印文章的title, 然后再去打印他的content属性。 function printPost (post) { console.log(post.title); console.
阅读全文
摘要:在创建一个函数并调用时可以传入一些参数或变量,不过函数究竟可以有多少可用的参数呢? 函数中的变量 以下通过一个例子来检查在调用函数时会有哪些变量和参数,在这里可以在浏览器的“无痕窗口”中直接运行这段代码(无痕窗口能避免浏览器插件影响运行)。 注意:这里仅仅针对传统函数,箭头函数的运行变量与传统函数不
阅读全文
摘要:题目: 人民币由100元,50元,20元10元,5元1元,5毛,1毛面额组合。写一个方法随便传入一个数字参数,就输出人民币组合。比如传入1526.5就显示1526.5元由人民币100元15张,20元1张,5元一张1元一张5毛一张构成。无需考虑多种组合方式,只需考虑最简单的组合方式。 思考: 我们首先
阅读全文
摘要:对于JavaScript中比较运算符,可能大家用的比较多的是“==”、对于“ ”很多人可能很陌生。 表示恒等,首先比较两边的变量数据类型是否相等,其次比较两边的变量的数值是否相等;== 表示相等即仅仅比较两边变量的数值是否相等。 一、“ ”首先计算其操作数的值,然后比较这两个值,比较过程没有任何类型
阅读全文
摘要:这个问题在很多文章中都讨论过,在 ESlint 规范中也因为加不加分号而分为两大阵营,到于加不加分号,关键是需要了解分号对于 JavaScript 的影响,开始之前可以先看看下面这道面试题: 请问这段代码是否能够正常运行? var a = 1 (function() { console.log(2)
阅读全文
摘要:一般表单页面都需要填写手机号,校验用户输入的手机号码是否正确,就要用到正则表达式,用正则表达式来匹配手机号段,如在运营商号段内,则号码正确。因此,需要知道运营商最新的号段,如下所示: 各大运营商手机号码段(新) 中国电信号段 133、153、173、177、180、181、189、190、191、1
阅读全文
摘要:常见的错误类型 RangeError: 标记一个错误,当设置的数值超出相应的范围触发。比如,new Array(-20)。ReferenceError: 引用类型错误,当一个不存在的变量被引用时发生的错误。比如:console.log(a)。SyntaxError:语法错误。比如 if(true)
阅读全文
摘要:切入点从场景描述出发,即先定义好我们要实现的功能 执行器函数 构造函数入参 executor 自执行函数。会在在 new 的时候同步执行,传入 resolve 和 reject 状态扭转函数。自执行函数内部根据异步任务执行结果(成功或失败)调用状态扭转函数,把状态传递给后续的 then。 状态转化
阅读全文
摘要:1.三元运算符 新手 let hungry = true; let eat; if (hungry == true) { eat = 'yes'; } else { eat = 'no'; } 老手 let hungry = true; let eat = hungry == true ? 'yes
阅读全文
摘要:浮点数的存储 首先要搞清楚 JavaScript 如何存储小数。和其它语言如 Java 和 Python 不同,JavaScript 中所有数字包括整数和小数都只有一种类型 — Number。它的实现遵循 IEEE 754 标准,使用 64 位固定长度来表示,也就是标准的 double 双精度浮点数
阅读全文
摘要:JavaScript中有多种循环Array的方式,你是否常常分不清他们的细微差别,和适用场景。本文将详细梳理各间的优缺点,整理成表以便对比。 循环可访问element可访问index可迭代property支持中断支持await支持任意位置开始 for √ √ × √ √ √ for in √ × √
阅读全文
摘要:1. 转字符串 const input = 123; console.log(input + ''); // '123' console.log(String(input)); // '123' console.log(input.toString()); // '123' 2. 转数字 const
阅读全文
摘要:前言 首先,我们看一下微信开放文档中的一张图: 上面的一幅图中清楚地介绍了微信登录整个过程,下面对图上所示进行总结: 一、二维码的获得 用户打开登录网页后,登录网页后台根据微信OAuth2.0协议向微信开发平台请求授权登录,并传递事先在微信开发平台中审核通过的AppID和AppSecrect等参数;
阅读全文
摘要:本文主要讲解 JavaScript 在异步流程控制中的一些实践、容错以及复杂异步环境下我们该如何去处理。 发展历史 简要的提及一下,异步流程控制的发展历史大概是 callback hell => Promise => Generator => async/await ES6 中 Promise 是通
阅读全文