zoukankan      html  css  js  c++  java
  • ES6知识点大汇总

      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

     

  • 相关阅读:
    windows批处理
    网络设备巡检命令
    DOS笔记
    通过一台服务器ssh多台主机远程修改网卡ip
    DELL服务器PXE前期处理
    PXE推一半失败,HP服务器、曙光服务器删除数据
    IBM存储降级告警等一些服务器问题/dd/ethtool
    bond下改变网卡
    AndroidStudio 点9图片文件报错
    在AndroidStudio不能找到so文件问题:couldn't find libweibosdkcore.so
  • 原文地址:https://www.cnblogs.com/zr123/p/8353084.html
Copyright © 2011-2022 走看看