ES6基础初步

ES6简介

 

 

 let命令

ES6新增了let命令,用来声明变量,它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

{
    var a=1;
    let b=2;
}
console.log(a);
console.log(b);

 

 

 let不存在变量提升

var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined,按照一般的逻辑,变量应该在声明语句之后才可以使用。let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。

 console.log(a);
    console.log(b);
    var a;
    a=1;
    let b=2;

  

 

 

 

 let暂时性死区

在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”

 var a=1;
    if(true){
        console.log(a);
        let a=2;
        console.log(a);
    }

块级作用域

第一场景,内层变量会覆盖外层变量

var tmp = new Date();
function f() {
  console.log(tmp);
  if (false) {
    var tmp = "hello world";
  }
}
f(); 

第二场景,用来计数的循环变量泄露为全局变量

var s = 'hello';

for (var i = 0; i < s.length; i++) {
  console.log(s[i]);
}
console.log(i);

const命令

const声明一个只读的常量,一旦声明,常量的值就不能改变

const PI = 3.1415;
PI // 3.1415
PI = 3;
// TypeError: Assignment to constant variable

解构赋值

数组的解构赋值

ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值。

let [a, b, c] = [1, 2, 3]; 

 

 

 对象解构赋值

 

 

 

 对象的属性没有次序,变量必须与属性同名,才能取得到正确的值

let { bar, foo } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"

let { bar } = { foo: "aaa", bar: "bbb" };
baz // undefined

字符串解构赋值

字符串被转换成一个类似数组的对象

const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o”

函数参数的解构赋值

 

function add([x, y]){
  return x + y;
}
add([1, 2]); // 3

 

模板字符串

$('#result').append(`
  There are <b>${basket.count}</b> items
   in your basket, <em>${basket.onSale}</em>
  are on sale!
`);

  

 

posted @ 2020-09-22 19:00  咩咩咩咩825  阅读(78)  评论(0编辑  收藏  举报