1 //1.搭建ES6的开发环境;
2 let a=1;
3 console.log(a);
4 //2.var 声明的是全局变量 全局变量会污染外部的区块
5 //let 局部变量
6 //const 常量 声明了就不能改变
7 var b='zhangfan';
8 //console.log(b);
9 window.onload=function(){
10 //console.log(b); //zhangfan 能看出是全局变量
11 };
12 {
13 var b='zf';
14 }
15 //console.log(b);//zf 覆盖了zhangfan
16 {
17 let b='fz';
18 console.log(b);//fz
19 }
20 console.log(b);//zf
21 const c='zfa';
22 console.log(c);
23 for(var f=1;f<10;f++){
24 console.log('循环内'+f);//1~9
25 }
26 console.log('循环外'+f);//10
27 for(let h=1;h<10;h++){
28 console.log('循环内'+h);//1~9
29 }
30 //console.log('循环外'+h);//报错
31 //3.解构赋值 常用于前后端分离对json文件的解构
32 /*let [aa,bb,cc]=[0,1,2];
33 console.log(aa);
34 console.log(bb);
35 console.log(cc);*/
36 /*let [aa,[bb,cc],dd]=[0,1,2,3]
37 console.log(aa);
38 console.log(bb);
39 console.log(cc);
40 console.log(dd);*/ //报错
41 let [aa,[bb,cc],dd]=[0,[1,2],3];
42 console.log(aa);
43 console.log(bb);
44 console.log(cc);
45 console.log(dd);
46 let [foo=true]=[];
47 console.log(foo);//true
48 let [uu,mm='zd']=['sg'];
49 console.log(uu + mm);//sgzd
50 //undefined,null
51 let [uu1,mm1='zd']=['sg',undefined];//没有值,所以取默认值
52 console.log(uu1 + mm1);//sgzd
53 let [uu2,mm2='zd']=['sg',null];//null有值但为空
54 console.log(uu2 + mm2);//sgnull
55 //对象解构
56 let {foo1,bar}= {foo1:'sd',bar:'sf'};//必须一一对应
57 console.log(foo1 + bar);//sdsf
58 let foo2;
59 ({foo2}={foo2:'jspang'});//必须加()
60 console.log(foo2);
61 //字符串的解构
62 const [w,e,r,t,y,g]='jspang';
63 console.log(w);//j
64 console.log(e);//s
65 console.log(r);//p
66 console.log(t);//a
67 console.log(y);//n
68 console.log(g);//g
69 // 4.对象扩展运算符和rest运算符
70 //对象扩展运算符
71 function jspang(...arg){
72 console.log(arg[0]);//1
73 console.log(arg[1]);//2
74 console.log(arg[2]);//3
75 console.log(arg[3]);//undefined
76 }
77 jspang(1,2,3);
78 //以前的写法:
79 function js(a,b,c){
80 console.log(a);//1
81 console.log(b);//2
82 console.log(c);//3
83 }
84 js(1,2,3);
85
86 let arr1=['happy','ha','fa'];
87 let arr2=arr1;
88 console.log(arr2);//["happy", "ha", "fa"]
89 arr2.push('ma');
90 console.log(arr1);//["happy", "ha", "fa", "ma"]
91 // 运用扩展运算符解决问题:
92 let arr3=['happy','ha','fa'];
93 let arr4=[...arr3];
94 console.log(arr4);//["happy", "ha", "fa"]
95 arr4.push('ma');
96 console.log(arr4);//["happy", "ha", "fa", "ma"]
97 console.log(arr3);//["happy", "ha", "fa"]
98 //rest(剩余)运算符...
99 function Jspang(first,...arg){
100 console.log(arg.length);//7
101 //获取元素以前的写法:
102 for(let i=0;i<arg.length;i++){
103 console.log(arg[i]);//1,2,3,4,5,6,7
104 }
105 //新的写法:
106 for(let val of arg){
107 console.log(val);//1 2 3 4 5 6 7
108 }
109 }
110 Jspang(0,1,2,3,4,5,6,7)
111 //5.字符串模板
112 //以前的写法:
113 let happy='haha';
114 let blog='今天非常高兴'+happy+'啊';
115 console.log(blog);//今天非常高兴ha
116 //es6的新写法:
117 let happy1='haha';
118 let g1=5;
119 let l=6;
120 let blog1=`<h1>今天</h1>非常<br/>高兴${happy1}啊${g1+l}`;
121 console.log(blog1);
122 //查找
123 let hh='我很好';
124 let ll='今天天气很冷,但是我很好';
125 console.log(ll.indexOf(hh));//9
126 console.log(ll.includes(hh));//true //查找有没有此字符串
127 console.log(ll.startsWith(hh));//false//查找开头有没有此字符串
128 console.log(ll.endsWith(hh));//true//查找结尾有没有此字符串
129 //字符串的复制
130 document.write('zhangfan'.repeat(3))//zhangfan zhangfan zhangfan
131 //6.数字的操作
132 //二进制声明Binary
133 let binary=0o10101;
134 console.log(binary);//4161
135 //八进制声明Octal
136 let octal=0o666;
137 console.log(octal);//438
138 let aw=11/4;
139 console.log(Number.isFinite(aw));//true//isFinite判断是否是数字
140 console.log(Number.isFinite('aa'));//false//isFinite判断是否是数字
141 console.log(Number.isFinite(NaN));//false
142 console.log(Number.isFinite(undefined));//false
143 //NaN
144 console.log(Number.isNaN(NaN));//true
145 //Number.isInteger 判断是否是一个整数
146 let ee=918.16;
147 console.log(Number.isInteger(ee));//整型 //false
148 console.log(!Number.isInteger(ee));//浮点型 //true
149 console.log(Number.parseInt(ee));//转换成整型 //918
150 console.log(Number.parseFloat(ee));//转换成浮点型 //918.16
151 let jsp=Math.pow(2,53)+1;
152 console.log(jsp);//9007199254740992 2的53次方 最大值
153 console.log(Number.MAX_SAFE_INTEGER);//9007199254740991最大安全整数
154 console.log(Number.MIN_SAFE_INTEGER);//-9007199254740991最小安全整数
155 console.log(Number.isSafeInteger(jsp));//false判断是否是安全整数 false,将+1去掉就是true;
156 //7.有关数组的知识
157 //json数组格式
158 let json={
159 '0':'jspa',
160 '1':'技术胖',
161 '2':'jspa',
162 length:3
163 };
164 //Array.from方法
165 let arr=Array.from(json); //将对象转换成数组
166 console.log(arr);//['jspa','技术胖','jspa']
167 //Array.of方法
168 //‘3,4,5,6’
169 let arry=Array.of(3,4,5,6);
170 console.log(arry);//[3,4,5,6]
171
172 //普通方法:
173
174 let stt='[3,4,5,6]';
175
176 let arr5=eval(stt);
177
178 console.log(arr5);//[3, 4, 5,
179 // //find() 实例方法 查找数组元素
180 let arr6=[1,2,3,4,5,6,7];
181 console.log(arr6.find(function (value, index, arr) {//value查找的值 index值的索引 arr原型
182 return value > 5;
183 }));//6
184 let arr0=['jspa','技术胖','jspaa'];
185 console.log(arr0.find(function (value, index, arr) {//value查找的值 index值的索引 arr原型
186 return value =='jspa';
187 }));//jspa
188 //fill 填充替换
189 let arr7=['jspa','技术胖','jspaa'];
190 arr7.fill('web',1,3);//将数组中1-3中间的元素换成web;
191 console.log(arr7);//['jspa','web','web']
192 //数组循环
193 //以前的方法:
194 let arr8=[1,2,3,4,5,6,7,8];
195 for(let i=0;i<arr8.length;i++){
196 console.log(arr8[i]);//1 2 3 4 5 6 7 8
197 }
198 //新方法:
199 for(let item of arr8){
200 console.log(item);//1,2,3,4,6,7,8
201 }
202 for(let item of arr8.keys()){ //输出数组的下标
203 console.log(item);//0,1,2,3,4,6,7
204 }
205 for(let item of arr8.entries()){//输出数组的下标和元素
206 console.log(item);//[0,1] [1,2] [2,3]
207 }
208 for(let [index,val] of arr8.entries()){//输出数组的下标和元素
209 console.log(index+':'+val);//0:1 1:2 2:3...
210 }
211 //8.entries 条目 记录
212 let arr9=['jspa','技术胖','jspaa'];
213 let list=arr9.entries();
214 console.log(list.next().value);//[0,'jspa']
215 console.log('........');
216 console.log(list.next().value);//[1,'技术胖']
217 console.log('........');
218 console.log(list.next().value);//[2,'jspaa']
219 //9.函数的扩展 箭头函数
220 //es5函数
221 function add(a,b){
222 return a+b;
223 }
224 console.log(add(1, 2));//3
225 //es6函数 默认值
226 function add2(a,b=1){
227 if(a==0){
228 throw new Error('A is Error')
229 }
230 return a+b;
231 }
232 console.log(add2(1));//2
233 function add3(a,b=1){
234 //'use strict'; //严谨模式
235 return a+b;
236 }
237 //console.log(add3(1));//报错
238 console.log(add3(1, 2));//3
239 console.log(add2.length);//1 获得需要传递参数的个数
240 //箭头函数
241 var add4=(q,o=1) => q+o;
242 console.log(add4(1));//2
243 var add4=(q,o=1) => {return q+o};
244 console.log(add4(2));//3
245 var add4=(q,o=1) => {
246 console.log('11111');
247 return q+o;
248 } ;
249 console.log(add4(3));//4
250 //10.函数和数组
251 //对象的函数解构json
252 let json2={
253 a:'jspang',
254 b:'web'
255 }
256 function fun({a,b='web2'}){
257 console.log(a, b);//jspang web
258 }
259 fun(json2);
260 //数组解构
261 let aar=['jspang','jishu','前端教程'];
262 function fun2(a,b,c){
263 console.log(a, b, c);
264 }
265 fun2(...aar);//jspang jishu 前端教程
266 //in的用法
267 let obj={
268 a:'jishupang',
269 b:'fafa'
270 };
271 console.log('a' in obj);//true 判断对象里是否有a
272 //判断数组
273 let aaa=[,,,];
274 console.log(1 in aaa);//false
275 let aaa1=['gg',,,];
276 console.log(0 in aaa1);//t
277 //数组遍历 1.forEach
278 let ss=['aa','ff','gg'];
279 ss.forEach((val,index)=>console.log(index,val));//0 'aa' 1 'ff' 2 'gg'
280 //2.filter
281 ss.filter(x=>console.log(x));//aa ff gg
282 //3.some
283 ss.some(x=>console.log(x));//aa ff gg
284 //4.map 替换
285 console.log(ss.map(x=>'web'));//["web", "web", "web"]
286 //数组转换成字符串
287 console.log(ss.toString());//aa,ff,gg
288 console.log(ss.join('|'));//加入 aa|ff|gg
289 //11.es6对象
290 //对象的赋值
291 //es5对象的赋值:
292 let name='zhangfan';
293 let skill='web';
294 let obj1={
295 name:name,
296 skill:skill
297 };
298 console.log(obj1);//{name: "zhangfan", skill: "web"}
299 //es6对象的赋值:
300 let obj2={
301 name,
302 skill
303 };
304 console.log(obj2);//{name: "zhangfan", skill: "web"}
305 //key值的构建
306 let key='skill';
307 var obj0={
308 [key]:'web'
309 }
310 console.log(obj0);//{skill:'web'}
311 //自定义对象的方法:
312 let obj3={
313 add:function(a,b){
314 return a+b;
315 }
316 }
317 console.log(obj3.add(1, 2));//3
318 //is() 对两个对象进行比较
319 let obj4={name:"zzzz"};
320 let obj5={name:"zzzz"};
321 //es5方法:
322 console.log(obj4.name === obj5.name);//true
323 //es6方法:
324 console.log(Object.is(obj4.name, obj5.name));//true
325 //同值相等
326 console.log(+0 === -0);//true
327 console.log(NaN === NaN);//false
328 //严格相等
329 console.log(Object.is(+0, -0));//false
330 console.log(Object.is(NaN, NaN));//true
331 //assign 对象的合并
332 let dd1={dd:'ww'};
333 let ddd={ddd:'www'};
334 let dddd={dddd:'wwww'};
335 let d2=Object.assign(dd1,ddd,dddd);
336 console.log(d2);//{dd: "ww", ddd: "www", dddd: "wwww"}
337 //12.Symbol 数据类型
338 let p1=new String;
339 let p2=new Number;
340 let p3=new Boolean;
341 let p4=new Array();
342 let p5=new Object;
343 let f1=Symbol();
344 console.log(typeof f1);//symbol
345 console.log(typeof p1);//object
346 console.log(typeof p2);//object
347 console.log(typeof p3);//object
348 console.log(typeof p4);//object
349 console.log(typeof p5);//object
350
351 let jspang2=Symbol('jishupang');
352 console.log(jspang2);//Symbol('jishupang') 红色的
353 console.log(jspang2.toString());//Symbol('jishupang') 黑色的
354
355 let jspang3=Symbol();
356 let obj6={
357 [jspang3]:'jspo'
358 }
359 console.log(obj6[jspang3]);//jspo
360 obj6[jspang3]='webd';
361 console.log(obj6[jspang3]);//webd
362
363 let obj7={name:'jsp',skill:'web'};
364 let age=Symbol();
365 obj7[age]=18;
366 console.log(obj7);//{name: "jsp", skill: "web", Symbol(): 18}
367 for(let item in obj7){
368 console.log(obj7[item]);//jsp web
369 }
370 console.log(obj7[age]);//18
371 //13.Set 数组去重
372 let setArr=new Set(['jsp','技术胖','webb','jsp']);
373 console.log(setArr);//Set{'jsp','技术胖','webb'}
374 //has 查找
375 console.log(setArr.has('jsp'))//true
376 //clear() 全部删除
377 //setArr.clear();
378 //console.log(setArr);//Set{}
379 //delete() 删除
380 setArr.delete('webb');
381 console.log(setArr)//Set{'jsp','技术胖'}
382 //循环输出 for...of
383 for(let item of setArr){
384 console.log(item);
385 };
386 //forEach
387 setArr.forEach((value)=>console.log(value));//jsp,技术胖
388 //size 属性
389 console.log(setArr.size);//2
390 //WeakSet
391 let weakObj=new WeakSet();
392 let obj9={a:'jsp',b:'webb'};
393 let obj99={a:'jsp',b:'webb'};
394 weakObj.add(obj9);
395 weakObj.add(obj99);
396 console.log(weakObj);//WeakSet{Object{a:'jsp',b:'webb'},Object{a:'jsp',b:'webb'}}
397 //14.map 数据类型 很重要,很灵活
398 let jason={
399 name:'ff',
400 skill:'webl'
401 };
402 console.log(jason.name);//ff
403 //=>
404 var map=new Map();
405 //set
406 map.set(jason,'iam');
407 console.log(map);///Map(1) {{…} => "iam"}
408 map.set('jsonb',jason);
409 console.log(map);///Map(2) {{…} => "iam", "jsonb" => {…}}
410 //map增删查
411 //get
412 console.log(map.get(jason));//iam jason为key iam为value
413 console.log(map.get('jsonb'));//{name: "ff", skill: "webl"} //'jsonb'为key jason为value
414
415 //delete clear
416 map.delete(json);
417 console.log(map);
418 console.log(map.size);//2
419 //查找 has
420 console.log(map.has('ff'));//false
421 // //15.proxy 代理 增强对象和函数(方法)vue生命周期 钩子函数 预处理
422 let obje={
423 add:function(val){
424 return val+100;
425 },
426 name:'I am Jaspang'
427 }
428 console.log(obje.add(100));//200
429 console.log(obje.name);//i am jaspang
430
431 let pro=new Proxy({
432 add:function(val){
433 return val+100;
434 },
435 name:'I am Jaspang'
436 },{
437 //预处理机制 get set apply
438 get:function(target,key,property){
439 console.log('come in get');
440 return target[key];
441 },
442 set:function(target,key,value,receiver){
443 console.log(`setting ${key}=${value}`);//setting name=技术胖
444 return target[key]=value;//返回结果
445 }
446 });
447 console.log(pro.name);//come in get
448 pro.name='技术胖';
449 console.log(pro.name)//技术胖
450 //apply
451 let target=function(){
452 return 'i am zhangfan'
453 }
454 let handler={
455 apply(target,ctx,args){
456 console.log('do apply');
457 return Reflect.apply(...arguments);
458 }
459 };
460 let pro1=new Proxy(target,handler);//handler为预处理
461 console.log(pro1());//i am zhangfan
462 //16.promise 解决es5中回调地狱问题
463 let state=1;
464 function step1(resolve,reject){
465 console.log('1.开始,洗菜做饭');
466 if(state==1){
467 resolve('洗菜做饭完成')
468 }else{
469 reject('洗菜做饭错误')
470 }
471 }
472 function step2(resolve,reject){
473 console.log('2.开始,坐下来吃饭');
474 if(state==1){
475 resolve('坐下来吃饭完成')
476 }else{
477 reject('坐下来吃饭错误')
478 }
479 }
480 function step3(resolve,reject){
481 console.log('3.开始,收拾桌子洗碗');
482 if(state==1){
483 resolve('收拾桌子洗碗完成')
484 }else{
485 reject('收拾桌子洗碗错误')
486 }
487 }
488 new Promise(step1).then(
489 function(val){
490 console.log(val);
491 return new Promise(step2)
492 }
493 ).then(
494 function(val){
495 console.log(val);
496 return new Promise(step3)
497 }
498 ).then(
499 function(val){
500 console.log(val);
501 }
502 )
503 //17.class类
504 class Coder{
505 name(val){
506 console.log(val);//大技术胖
507 return val;
508 }
509 skill(val){
510 console.log(this.name('大技术胖') + ':' + 'skill-' + val);
511 }
512 //类的传参
513 constructor(a,b){
514 this.a=a;
515 this.b=b;
516 }
517 add(){
518 return this.a+this.b;
519 }
520 }
521 let jspang1=new Coder;
522 //jspang1.name('大技术胖');
523 jspang1.skill('web');
524 let ha=new Coder(1,2);
525 console.log(ha.add());//3
526 //类的继承
527 class htmler extends Coder{};
528 let pang=new htmler;
529 console.log(pang.name('大技术胖'));
530 //18.模块化操作
531 //export 输出操作
532 //import 引入操作
533 //1.export的引入方式
534 //import {name,cname,skill} from './temp';
535 //console.log(name);
536 //2.export default的引入方式
537 //import shy from './temp';
538 //console.log(shy);
539 //src/babel-node index.js

ES6知识点大汇总的更多相关文章

  1. C++知识点大汇总

    概述 1.1980年 贝尔实验室 Bjanre Stroustrup(比雅尼·斯特劳斯特鲁普)对C改进与扩充 最初称为"带类的C",(c with classes). 1983年正 ...

  2. 大礼包!ANDROID内存优化(大汇总)

    写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...

  3. android app性能优化大汇总(内存性能优化)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  4. ANDROID内存优化——大汇总(转)

    原文作者博客:转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! ANDROID内存优化(大汇总——上) 写在最前: 本文的思路主要借鉴了20 ...

  5. ANDROID内存优化(大汇总——中)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  6. ANDROID内存优化(大汇总——上)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  7. 总结HTML5的学习方法大汇总

    html5学习方法之技能清单: 必须掌握基本的Web前端开收技术,其中包括:CSS.HTML.DOM.java.Ajax,jquery,Vue,jquery- mobile,zepto等,在掌握这些技 ...

  8. ANDROID内存优化(大汇总——全)

    写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...

  9. C#开源系统大汇总(个人收藏)

    C#开源系统大汇总 一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖 ...

随机推荐

  1. Myeclipse2014 已有项目更换JDK

    原先项目使用JDK是1.7,今天项目加入了一个新包,只支持JAVA8,让我们都升级一下本地的JDK,我突然发现我还没有在myeclipse上升级过JDK呢.捣鼓了一下,也不难,记录一下. 1.下载ja ...

  2. 2017年 JavaScript 框架回顾 -- React生态系统

    前一篇文章中,我们介绍了2017年 JavaScript 框架的整体情况.我们也了解到在众多的前端框架中,目前最为庞大又在快速增长的当属 React 了,本文就来重点介绍 React 的生态系统. 首 ...

  3. [国嵌攻略][106][Linux内存管理子系统]

    内存管理子系统 1.虚拟地址与物理地址的映射 2.物理内存的分配 Linux虚拟地址空间分布 设备最后访问的一定是物理地址,但Linux系统中使用的都是虚拟地址.虚拟地址简单的来说就是程序中使用的地址 ...

  4. 基础二 day4

    昨日回顾int bit_lenth()bool int ----> bool 非零True,0 False bool----> True 1 False 0 str ----> bo ...

  5. 最大连接数:60 iops:150 什么概念?

    最大连接数:最多允许同时多少个客户端连接到数据库  iops:每秒读写操作的次数    关于最大连接数:  假设一个时间点:00:01:00    00:01:01 -> 第一个客户端连接到数据 ...

  6. JAVA BASE64

    Base64编码说明:     Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节, ...

  7. JSTL与EL的区别

    JSTL JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的.JSTL只能运行在支持J ...

  8. apache (order allow,deny or deny,allow)

    平台:"rhel6.2" 实验内容: "测试apache‘order allow,deny’ or ‘order deny,allow’ 功能" 配置文件:&q ...

  9. CentOS7 配置花生壳开机启动

    在家安装服务器,外地可以随时登陆,感觉花生壳特别方便,具体路由器配置请参考http://service.oray.com/question/2486.html. 我使用的操作系统是 [root@loc ...

  10. java里程碑之泛型--擦除和转换

    在严格的泛型代码里,带泛型声明的类总应该带着泛型参数.但是为了和古老的java代码保持一致,也就是说为了向下兼容,也允许在使用带泛型声明的类时不指定实际的类型参数.如果没有为这个泛型类指定实际的参数类 ...