ES6新特性的具体示意 1.21

142 阅读2分钟

这篇文章主要讲ES6各个属性常用的详细注意要点。

基础参考:阮一峰ECMAScript6入门

一:声明变量

ES5 只有两种声明变量的方法:var命令和function命令。ES6 除了添加let和const命令,另外两种声明变量的方法:import命令和class命令

1:let,const,var

区分1:let不支持变量预解析

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

如果反过来

console.log(a);        var a = 1;//undefined    
console.log(b);        let b = 2;//报错ReferenceError

区别2:let不支持变量重复声明

var a = 1;        var a = 1000;       console.log(a);//1000       
let b = 2;        let b = 2000        console.log(b);//报错:提示b已经被声明

—————— 区别3:let支持只在块级别作用域内生效 var不行

{  var a = 1;  }  console.log(a);//1        
{  let b = 2;  console.log(b);//2  }  
console.log(b)//报错: b is not defined

区别四:const:声明一个只读的常量

const与let的用法相当,适用于上述123特性。跟let的区别在于一旦赋值就无法更改。

const c = 3;    console.log(c);//3    
const c = 3;        c = 10;        console.log(c);//报错        
const c;//报错。ps只声明不赋值也报错,必须在声明的同时赋值
特殊情况可以在const内部进行修改
const d = {};    d.name = "dawang"    console.log( d );//{name: "dawang"}

二:字符串拓展

ES5复习一下indexof的常用的几种用法缺点,不能 判断Nan元素,不够语意化

var str = "tianxuans"        
console.log(str.indexOf("t")) //0首次出现的位置的        
console.log(str.indexOf("c"))//-1 没有出现该位置        
console.log(str.indexOf("a",4))//6 从第四个位置查找a,包含当前        
console.log(str.indexOf("a",4,3))//6 从第四个位置查找a,包含当前,往下查三位

Array.includes()

ES6新增。优点:解决了上述两个问题 缺点:不能定位

console.log(str.includes("t"))//true
console.log(str.includes("c"))//false

startsWith(),endsWith

判断字符串是否在头部跟尾部

str.startsWith('tian')//true
str.endsWith('tian')//false

repeat()

返回一个新字符串,并且重复n次

console.log(str.repeat(3))//tianxuanstianxuanstianxuans

``

模版字符串老版用法

  var html = '<ul>'
    '<li></li>'+ 
    '<li></li>'+
    '<li></li>'+
    '</ul>'

新版不需要用加号跟引号,可以直接加在首尾并且会保留原有格式

var html2 = `<ul>
            <li></li>
            <li></li>
            <li></li>
            </ul>`
        console.log(html2)

对象新增

assign 对象合并

assign 首参数需要是对象,如果不是会先转化成对象,如果遇到无法转化对象的便会报错 [null 跟 undefined]

let obj1 = {a: 1};
console.log(Object.assign(undefined,obj1))//报错

assign 次参数如果不是对象就会跳过

console.log(Object.assign(obj1,undefined))//{a: 1}

注意点:assign是潜拷贝