Osheep

时光不回头,当下最重要。

ES6语法

声明变量的方式

es6中新增两种变量方式let和const,与var最大的区别是有了块级作用与的概念,而且es6里会强制开启严格模式(use strict),变量未声明,不能引用。

  • let
    使用let注意以下几点
    1、let不可以重复声明变量
    2、let不允许提前声明
    3、let存在块级作用域
function fn1(){
    for(let i = 0;i<5;i++){
        console.log(i);  //打印0,1,2,3,4
    }
     console.log(i);// Uncaught ReferenceError: i is not defined  会报错,
                                因为let 声明的变量只在自己的块级作用域里有效
}
fn1();
  • const
    使用const注意几点:
    1、const声明值类型(string,number,undefined,boolean)不可以修改;
    2、const声明引用类型(object,function,null)可以修改;
    3、const声明时必须赋值;
function fn2(){
      //值类型
     const pi = 123;
     console.log(pi); //报错,Assignment to constant variable.
    //引用类型
        const k = {
              a:1
          }
      console.log(const.b = 2)  //可以改变引用类型
         
}
fn2();

解构赋值:是一个Javascript表达式,这使得可以将值从数组或属性从对象提取到不同的变量中。)

  • 数组解构赋值
let [a,b] = [1,2];
console.log(a,b) //1,2
  • 字符串解构赋值
let {length : len} = 'hello';
len // 5
  • 布尔解构赋值
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true 
  • 数值解构赋值
var {wtf} = NaN;
console.log(wtf);
// undefined
  • 对象解构赋值
({a, b} = {a:1, b:2});
console.log(a); // 1
console.log(b); // 2
  • 函数参数解构赋值
function move({x, y} = { x: 0, y: 0 }) {
     return [x, y];
 }
 
 console.log(move({x: 3, y: 8})); // [3, 8]
 console.log(move({x: 3})); // [3, undefined]
 console.log(move({})); // [undefined, undefined]
 console.log(move()); // [0, 0]

字符串模板

//es5写法
var name = 'gongjialin';
var age = 20;
var reslut = "我的名字是"+name+"年龄是"+age;
console.log(reslut);  //我的名字是gongjialin,年龄是20
es6写法
var name = 'gongjialin';
var reslut1 = `我的名字是${name}` ; //此时的${name}就是变量
console.log(reslut1);  //我的名字是gongjialin

反引号中的字符串可以随意换行
反引号中可以随意插入变量的值和表达式

箭头函数

1、箭头函数可以简写到一个函数参数和一条语句
2、箭头函数的this被调用者的上一层对象
3、箭头函数没有arguments,可以用…rest参数替代

1、在函数中叫做rest参数,剩余的参数,全部放在最后,如果函数存在rest参数,必须放在最后面
2、在数组中叫做可扩展运算符,将数组展开

点赞