ES6--基础语法(一)

一、支持环境:node.js完全支持,标准浏览器完全支持。
二、测试环境:
chrome下需要在script标签的最先开始的地方需要添加"use strict"。
firefox下需要在script标签的type="application/javascript;version=1.7"。
三、基本语法:
1.变量let:
    1.不能重复申明变量(var 可以)。
    2.没有预解析的过程。(var 有)。
console.log(a);var a = 2;//console.log();undefined; let会报错。

    3.块级作用域的使用{ //块级作用域;代码块}

       {//从代码块的开始到申明的这段区域----暂存死区
                let a = 2;
                console.log(a);//可以访问;
            }
            console,log(a);//不可以访问。
            应用:输出0-9;的数字;
            for(var i = 0;i < 10;i++) {
                setTimeout(function() {
                    console.log(i);//会输出10次10,
                });
            }
           for(let i =0; i < 10;i++) {
             setTimeout(function() {
                console.log(i);
            });//0-9;
          }
         for(var i = 0; i < 10;i++) {
             (function(i) {//闭包函数(自执行函数),循环一次执行一次,相似一{}块级作用域。
                setTimeout(function() {
                    console.log(i);
                });
             })(i);
         }
  2、常量const:不变的量。常量保存值的时候不能改变,保存的是一个对象的时候可以改变。
const a = 2; a=5;//会报错。
const b = { name = "assassion" };
b.name = "seafuwg";//对象的话可以修改。
  3、解构赋值:es6 允许按照一定的规则,从数组和对象中取值,对变量赋值。(目前firfox支持词语法,chrome低版本不支持)
    3.1 数组:按照顺序赋值。
    
var arr = [1,2,3];
var [a,b,c] = arr;
console.log(a);//1
//eg: 值的交换
let x = 2;
let y = 3;
let [x,y] = [y,x]; 
    3.2 对象:是按照键的名字赋值;方便从对象中取值,值的交换等
            let obj = {
                 fn : function() {},
                 name : "assassion",
                 arr : [],
                 obj1 : {}
             };
             let {fn,name,obj1} = obj;
             console.log(fn,name,obj1);    
  4.字符串的扩展
    4.1对一些特殊汉字,及表情的支持占四个字节的长度
    var a1 = "𠮷";
    console.log(a1.length);
    console.log(String.fromCodePoint(134071));

    str.at();//找到对应的字符,有些浏览器不支持
    String.codePointAt();//返回汉字所对应的码点(码值)
    String.fromCodePoint()//根据码点返回对应的汉字
    str.repeat(n);//传递一个参数,表示字符串重复的次数

    4.2 模板字符串:用反引号,在反引号中用${变量,常量,表达式,对象...}表示,是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。代码中的字符串用反引号(`)表示,如果需要引入变量则使用${变量名}, 在{}中可以进行运算,也可以引用对象属性。

             var name1 = "assassion";
             var age1 = 23;
             var str = "name:"+name1+" age:"+age1+"";
             console.log(str);
             var str1 = `name:${name1} age:${age1}`;
             console.log(str1);    
    4.3字符串查找的扩展方法:和indexOf语法规则基本相似,indexOf(),返回的是值或者-1。扩展的都是ture或者false;
      4.3.1 str.includes();参数:
          1、要查找的字符串
      2、起始位置
      返回布尔值,表示是否找到了参数字符串
                     let aa = "assassin";
                     console.log(aa.includes("i"));//true
                     console.log(aa.includes("i",5));//true
                     console.log(aa.includes("i",7));//false                         
      4.3.2 str.startsWith()
        参数:
        1、要查找的字符串
        2、起始位置
        返回布尔值,表示参数字符串是否在源字符串的头部。
                     console.log(aa.startsWith("ass"));//true
                     console.log(aa.startsWith("ass",3));//true
                     console.log(aa.startsWith("ass",4));//false     
      4.3.3str.endsWith()
      参数:
      1、要查找的字符串
      2、起始位置(针对的是n个字符)
       返回布尔值,表示参数字符串是否在源字符串的尾部。
                 console.log(aa.endsWith("in"));//true
                 console.log(aa.endsWith("i"));//false
                 console.log(aa.endsWith("i",7));//true 字符串的索引都是从1开始。         
    5.数值的扩展  
      5.1 二进制和八进制的表示方法:0b和0o;
      5.2 Math函数的扩展:
         
5.2.1. Math.trunc();去掉小数点,Math.trunc(1.92344) = 1;简单的去掉小数。
         5.2.2. Math.sign();判断一个数是正数,负数,正0,负0;
         5.2.3. Math.hypot(a,b);返回两个数的平方和的平方根(勾股定理)
    6.数组的扩展
      6.1 Array.from();//把类数组的数据转换成数组
                     var str1 = "assassin";
                     var str2 = [].slice.call(str1);//以前的方法
                     console.log(Array.from(str1));
                     console.log(Array.from(str2));                 
      6.2 Array.of();//将一组参数转换成数组;类似于new Array(1,2,3,4,5);
var arr = Array.of(1,2,3,4,5);
      6.3 arr.find();//找出第一个符合条件的数组元素。
        找出第一个符合条件的数组元素
        参数:
          1、回调函数
          2、回调函数内this的指向
        遍历整个数组,遍历过程中调用回调函数,如果回调函数的返回值为true,则返回当前正在遍历的元素。如果所有元素都不符合条件则返回undefined
                     var array = [1,2,3,4,5,6,7,8];
                     var n = array.find(function(val,index) {//函数里面的参数1:遍历的元素,参数2:遍历的索引
                           return val < 4;
                     });
            console.log(n);//1
      6.4 arr.findIndex();找出第一个符合条件的数组元素的位置
        参数:
          1、回调函数
          2、回调函数内this的指向
        遍历整个数组,遍历过程中调用回调函数,如果回调函数的返回值为true,则返回该数组元素的位置。如果所有元素都不符合条件则返回-1;和arr.find();方法用法相似,知识返回值不一样,返回的是数组的索引。
      6.5 arr.fill();用来填充数组
        参数:
          1、填充的内容
          2、起始位置
          3、结束位置
let fillArr = [1,2,3,4,5,6,7,8];
                 let fillArr1 = fillArr.fill(9,fillArr.length+1,length+2);//这样是无法添加的超出原数组的长度,知识填充,改变里面的不是添加
                 let fillArr2 = fillArr.fill(9,9,10);//这样是无法添加的超出原数组的长度
                 let fillArr3 = fillArr.fill(9,7,8);//这样是无法添加的超出原数组的长度
                 console.log(fillArr2); //1,2,3,4,5,6,7,9
      6.6 for of:遍历,只要有遍历接口就可以遍历。默认的对象是没有遍历接口的,会报错 undefined is not a function。
                 var arrForOf = [1,2,3,4,5,6];
                 for(let value of arrForOf) {
                    console.log(value);//1,2,3,4,5,6
                 }
                 for(let val in arrForOf) {
                    console.log(val);//它返回的是索引 0,1,2,3,4,5
                 }
                 //value:表示值,key: 表示键(索引);
                 let arrKey = [1,2,3,4,5,6];
                 for(let key of arrKey.keys()) {
                    console.log(key);//返回的索引
                 }
                 for(let value of arrKey) {//默认的后面添加数组即可let value of arrKey.values();
                    console.log(value);//返回的索引
                 }
                //value:表示值,key: 表示键(索引);一起遍历
                 for(let [key,value] of arrKey.entries() ) {
                    console.log(key,value);
                 }    
      6.7 数组推导:ES6提供简洁写法,允许直接通过现有数组生成新数组,字符串也可以。谷歌不支持
             var arrInfer = [for(value of arrKey) value*2];//还可以使用判断等。
             console.log(arrInfer);//原来的2倍
             var arrInfer1 = [for( i of arrKey) if(i > 2) i];
             console.log(arrInfer1);//数组大于2的元素

 

 




posted @ 2017-11-20 00:43  seafwg  阅读(289)  评论(0)    收藏  举报