ES6入门之let、const、解构赋值、字符串string新特性、数值的扩展

最近在看es6的一些新的方法和属性,太细的就不在这里分享了,把看到的总结这里跟大家分享一下...文章可能会有点长,但应该都是不烧脑的~~

1.let关键字

用let声明变量只在块级作用域起作用,适合在for循环使用,也不会出现变量提升现象。同一个代码块内,不可重复声明的相同变量,不可重复声明函数内的参数。

2.const

const也是用于声明一个常量,并必须赋值,声明后不可修改,跟let一样,只在块级作用域起作用,不可重复声明同一个变量,不会变量提升,声明引用类型的常量时,要注意是传址赋值。

3.解构赋值

数组解构

   var [a,b,c=3] =[1,2,4];
     console.log(a);//结果:a的值为1
     console.log(b);//结果:b的值为2
     console.log(c);//结果:c的值为4

 

对象解构

     var { a,b,c} = {"a":1,"b":2,"c":3};
     console.log(a);//结果:a的值为1    
     console.log(b);//结果:b的值为2
     console.log(c);//结果:c的值为3

 

字符串解构

    var [a,b,c,d,e,f] = "我是字符串";
    console.log(a);//
    console.log(b);//
    console.log(c);//
    console.log(d);//
    console.log(e);//
    console.log(f);//undefined

 

解构赋值给我们一种新的变量赋值方式,主要可以利用数组解构赋值和对象解构赋值。它的用途包括:交换变量值,提取函数返回值,函数参数定义,默认值设定等等,都给我们编程带来便利,在未来的代码中会见到越来越多人使用这个新特性。

4.字符串String新特性

模板字符串

   let name = "Jacky";
    let occupation = "doctor";
    //模板字符串拼接
    let str = `He is ${name},he is a ${occupation}`;//这里需要注意的是反引号
    //支持表达式运算
    var obj = {"a":1,"b":2};
    var str = `the result is ${obj.a+obj.b}`;
    //支持函数调用
    function fn() {
    return 3;
    }
    var str = `the result is ${ fn() }`;

 

标签模板

    var name = "张三";
    var height  = 1.8;
    tagFn`他叫${name},身高${height}米。`;
    //标签+模板字符串

    //定义一个函数,作为标签
    function tagFn(arr,v1,v2){
      console.log(arr); 
      //结果:[ "他叫",",身高","米。" ]
      console.log(v1); 
      //结果:张三
      console.log(v2); 
      //结果:1.8
     }

 

repeat函数

    var name1 = "我是字符串";  //目标字符串
    var name2 =  name1.repeat(3);
    //变量name1被重复三次;
    console.log(name1); 
    //结果:我是字符串
    console.log(name2);
    //结果:我是字符串我是字符串我是字符串

 

includes函数

    var name = "字符串";    //目标字符串
    name.includes('');   
    //true, 含有
    name.includes('web');  
    //false, 不含有
    name.includes('',1); 
    //false, 从第2个字符开始搜索, 不含有

 

startsWith函数

    var name = "字符串";  //目标字符串
    name.startsWith(''); 
    //true,出现在开头位置
    name.startsWith(''); 
    //false,不是在开头位置
    name.startsWith('',1); 
    //true,从第2个字符开始

 

endsWith函数

    var name = "我是字符串啊";    //目标字符串
    name.endsWith('');
    //false,不在尾部位置
    name.endsWith(''); 
    //true,在尾部位置
    name.endsWith('',5); 
    //false,只针对前5个字符
    name.endsWith('',6);
    //true,针对前6个字符

 

String.raw函数

    console.log(String.raw`hello\nwolrd`);
    //输出:hello\nwolrd

 

5.数值的扩展
  • 数值方法之前都是在window下的方法,es6都移动了Number对象下了,目的就是减少全局函数,增强模块化...

Number.isNan函数判断非数值

    Number.isNaN(2.5); //结果:false

 


与之前window.isNaN用法不同的是,之前会把字非数值转换了再判断,现在是直接判断不转换

Number.isFinite函数 用来检查一个数值是否非无穷

    Number.isFinite(1);
    //结果:true,数值1是有穷,即非无穷

    Number.isFinite(Infinity);
    //结果:false,Infinity表示无穷大的特殊值
  
    Number.isFinite('abc'); //结果:false

 

Number.parseInt函数解析一个字符串,返回一个整数

   //传统用法:
   parseInt('12.3abc');  
   //结果:返回数值12

   //ES6用法:
   Number.parseInt('12.3abc');
   //结果:返回数值12

 

Number.parseFloat函数解析一个字符串,返回一个浮点数

   //传统用法:
   parseInt('12.3abc');
   //结果:返回数值12

  //ES6用法:
   Number.parseInt('12.3abc');
  //结果:返回数值12

 

Number.isInteger函数 用来判断是否为整数

    Number.isInteger(3.2);
    //结果:false

    Number.isInteger(3);
    //结果:true

 

Math.trunc函数去除一个数的小数部分

   Math.trunc(3);
   //结果:3

   Math.trunc(3.1);
  //结果:3

 

Math.sign函数用来判断是正数,负数,还是零

   Math.sign(3);
   //结果:1

   Math.sign(-3);
   //结果:-1

   Math.sign(0);
   //结果:0

   Math.sign('abc');
   //结果:NaN

 

Math.cbrt函数计算一个数的立方根

   Math.cbrt(8);
   //结果:2

   Math.cbrt(27);
  //结果:3

 

ES6对Number对象新增了isInteger函数、极小常量Number.EPSILON、安全整数;还将window对象下的4个函数移植到了Number对象下;此外,对Math对象扩展了17个新函数。

posted @ 2017-03-14 11:12  希哈  阅读(197)  评论(0编辑  收藏  举报