ES6
文章平均质量分 61
ES6是前端面试时肯定会问到的技术,本专栏主要分享本人工作中遇到的问题解决方案以及最新最前沿的技术,互相进步。
百思不得小李
互相学习,多多指教
展开
-
JSON.parse解析报错Bad control character in string literal in JSON
当使用JSON.parse解析json时报错Bad control character in string literal in JSON,因为我们这个是自己的数据库,输入的数据不该出现\r\n,所以直接对数据库数据进行修改。方法一.前端解析前处理掉\r,\n,\t 等转义字符。这句把\r,\n,\t 都替换为空。方法二:数据库中更改数据。原创 2023-12-07 19:07:27 · 926 阅读 · 0 评论 -
JSON.parse解析json出错的替代方案:小程序上解析json出bug,而在微信开发者工具上解析json正常。
组件进行解码,后通过JSON.parse()将变量还原。如下所示,请求拿到后端数据后需要将其缓存到本地,这里有个坑就是 wx.setStorageSync和wx.setStorage单个key存储的数据最大1mb,如果你拿到后端的数据大于1mb,你直接存本地就会导致真机上报错,而微信开发者工具上可能不会报错,所以你看到了我这里用了try catch , 除此之外,我还把数据通过路由wx.reLaunch携带传递给下一页。函数可把字符串作为 URI 组件进行编码。然后使用的话需要先引入这个util.js。原创 2023-06-13 11:19:14 · 1209 阅读 · 0 评论 -
原生js获取今天、昨天、近7天的日期时间(年月日时分秒)、获取当前日期的前七天具体每一天的日期
原生js获取今天、昨天、近7天的日期时间(年月日时分秒)、获取当前日期的前七天具体每一天的日期原创 2023-08-16 09:12:41 · 1054 阅读 · 0 评论 -
18个常用的 JS 工具函数助力高效开发
日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率。原创 2023-05-06 09:28:20 · 176 阅读 · 0 评论 -
ES9新特性,了解一下?
正则命名捕获语法:?< name>let str = '2018-03-20';let reg = / (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) /; console.log(str.match(reg));打印结果如下:console.log(str.match(reg).groups); // { year:“2018”,month:“03”,day:“20”}let {year原创 2020-05-18 10:21:44 · 822 阅读 · 0 评论 -
浅谈ES6之Proxy与Reflect
Proxy在你封装框架时会用到Proxy,平常几乎用不到。proxy在目标对象的外层搭建了一层拦截,外界对目标对象的某些操作,必须通过这层拦截。var proxy = new Proxy(target, handler);new Proxy()表示生成一个Proxy实例,target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为。对于代理模式 Proxy 的作用主要体现在三个方面:1.拦截和监视外部对对象的访问2 .降低函数或类的复杂度3 .在复杂操作前对操作进行原创 2020-05-18 10:06:41 · 231 阅读 · 0 评论 -
ES6里新增的数据类型Symbol和迭代器函数generator
SymbolES6里新增了一种单独的原始数据类型Symbol,它通过 Symbol函数生成。Symbol函数前不能使用new命令,否则会报错。这是因为生成的 Symbol是一个原始类型的值,不是对象。Symbol的最大特点,就是每一个 Symbol都是不相等的,保证产生一个独一无二的值. var mySymbol = Symbol('Test') console.log(typeof mySymbol); //"symbol"可以当做一个唯一的key,如下例:let json={原创 2020-05-13 15:31:26 · 141 阅读 · 0 评论 -
ES7与ES8的新特性有哪些呢
ES2016(ES7)新特性ES7 是 ECMA-262 标准第 7 版的简称,从 ES6 开始每年发布一个版本,以年份作为名称,因此又称 ECMAScript 2016,简称 ES2016。ES7在之前ES6的基础上,只新增了两个特性:数组的includes方法和指数操作符**数组的includes方法includes()作用是查找一个值在不在数组里,若是存在则返回true,不存在返回false.console.log([‘a’, ‘b’, ‘c’].includes(‘a’)); //原创 2020-05-13 15:18:12 · 1546 阅读 · 0 评论 -
ES6里新增的Promise对象
js里的同步与异步浏览器是多线程的,js是单线程的(浏览器只分配一个线程来执行js)。一个进程包含多个线程,例如在浏览器打开一个应用就占用了一个线程。同步:在一个线程(主栈)上,同一个时间只能做一件事件,当前事情完成了才能继续进行执行下一个事情。异步:在线程(主栈)上执行任务,当发现某个任务是一个异步操作时,我们会把这个异步操作放到等待队列中,如果主栈执行完成,监听者会把等待队列里到达时间的异步任务放回主栈执行。异步操作有:宏任务:定时器(setinterval、settimeout)、事件绑定、原创 2020-05-13 14:45:52 · 268 阅读 · 0 评论 -
ES6里数值的扩展和Math对象新增的方法
二进制和八进制数值表示法ES6提供了二进制和八进制数值的新写法,分别用前缀0b和0o表示。0b111110111 === 503 //true0o767 === 503 //true八进制用0o前缀表示的方法,将要取代已经在ES5中被逐步淘汰的加前缀0的写法。Number.isFinite( )和Number.isNaN( )ES6在Number对象上,新提供了 Number.isFinite( )和Number.isNaN( )两个方法,分别用于检测是不是数字,是数原创 2020-05-11 18:07:06 · 176 阅读 · 0 评论 -
ES6里新增的数据结构Set和Map,利用Set结构去重对象数组
Set数据结构ES6引入了一种新的数据结构Set,它类似于数组,只不过其成员值都是唯一的,没有重复的值,利用这个特点可以进行数组去重。Set本身是一个构造函数,用来生成Set数据结构。let arr = [1,2,3,1,2,2,1,2,1,1];let set = new Set(arr); console.log(set.size) // 3console.log( [...set] ) // [1,2,3] 元素是唯一的 可以用来数组去重Set结构有以下几个方法:add(value原创 2020-05-11 17:59:06 · 314 阅读 · 1 评论 -
ES6里新增的类以及类的继承
类(class)ES6引入了class(类)这个概念,作为对象的模板。通过class关键字可以定义类。class Person ={ constructor(name,age){ console.log( `构造函数执行了,${name},${age}` ); }}let p1 = new Person('Strive',18);console.log(typeof Person) ; // function再来看个例子:class Point {cons原创 2020-05-11 17:53:54 · 167 阅读 · 0 评论 -
ES6里对象新增的方法
对象的简洁语法ES6里允许当对象属性名和值都一样时可简写成一个,也允许将函数简写,注意此时不要用箭头函数,看下例:var person = {name:‘张三’,birth: birth, //可以简写成 birthhello: function( ){return this.name}// 可简写为 hello( ){return this.name}}console.log(person.hello( ) ); //张三Object.isObject.is( )原创 2020-05-11 17:45:51 · 209 阅读 · 0 评论 -
ES6里数组新增的方法
1.Array.fromArray.from( )用于将一个类数组对象或者可遍历对象转换成一个真正的数组。那么什么是类数组对象呢?所谓类数组对象,最基本的要求就是具有length属性的对象。例子1:function show( ){let args = Array.from(arguments);args.push(6);console.log(args); // [1,2,3,4,5,6]}show(1,2,3,4,5)例子2:let str = “Strive”;let arr原创 2020-05-11 17:39:29 · 495 阅读 · 0 评论 -
ES6允许函数参数设置默认值和新增箭头函数
函数的参数默认值ES6允许为函数的参数设置默认值,如下例:function Point(x =0,y=0){this.x=x:this.y=y;}var p= new Point ( );console.log§; // p={x:o,y:0}函数参数定义默认值之后,就不能再在函数体里用let和const了,如下面这样就是错的:function show(a=18){let a = 101;}show( );箭头函数ES6允许使用“箭头” (=>)定义函数(参数)原创 2020-05-11 17:31:05 · 328 阅读 · 0 评论 -
ES6字符串模板和字符串扩展的方法
字符串模板模板字符串是增强版的字符串,用反引号标识。符号在键盘数字1左边,它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量,用法是${变量名}。先来看个字符串拼接的例子:看下结果:有了模板字符串后就不用拼接得这么痛苦,咱们可以直接在字符串里嵌入变量,如下:结果也是一样的。includes方法ES6里字符串新增的方法:includes方法。ES6以前我们查找字符串里是否包含指定的子串,我们是用字符串的indexOf方法,返回子串首次出现的索引位置,如果没查找到就返原创 2020-05-11 17:27:13 · 183 阅读 · 0 评论 -
ES6里的解构赋值和扩展运算符
解构赋值:按照一定模式,从数组和对象中提取值,对变量进行赋值。左边和右边结构格式要一致,解构赋值在ajax数据交互时非常有用。解构赋值分为数组的解构赋值和对象的解构赋值,解构赋值也能用于函数里作为形参。解构赋值数组的解构赋值数组的解构赋值,此时一定要区分它是数组还是解构,区分方法是看它是在赋值还是在取值,等号左边的都是解构,等号右边的都是数组或对象。let [a,b,c] = [1,2...原创 2020-04-29 14:57:31 · 393 阅读 · 0 评论 -
浅谈ES6里的let const import export class命令和块级作用域
ES6简介ES6全称是ECMAScript6,它是于2015年6月正式发布的JavaScript语言的标准.现在已经发展到了ES10。let const import export class命令1. let 命令ES6新增了let命令,用来声明变量。它的用法类似于var,但区别是let声明的变量只在let命令所在的代码块{ }内有效,也就是说let声明的变量有块级作用域,而var没有...原创 2020-04-08 09:37:08 · 881 阅读 · 0 评论