这篇文章主要讲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是潜拷贝