1、let和const; let:用来声明变量,类似var,不过let声明变量只在代码块内有效(和Java、c#等后台语言声明变量一样)。
for(let i=0;i<3;i++){
console.log(i)
}
console.log(i);//会报错i未定义
使用var定义是不会报错,var定义,实际上只存在函数作用域和全局作用域(要么在方法里面的,要么就是全局的),而let是有代码块作用域的(大括号), let不存在变量名提升,先使用,后声明,会报错;var声明会输出undefined。 会存在暂时性死区(就是不能在代码块中,使用let或const声明,在声明前使用了,会报错) const:常量,不能重新声明修改;不过声明的是对象、数组等可以修改里面的值和属性
const a={name:"long",age:18}
a.age=20
console.log(a)
const b=[1,2,3]
b[0]=5
console.log(b)
2、解构赋值 就是两边结构类似,按照类型解构获取值;
var [,name,] =["long","jack","Tom"]//左右结构相似
console.log(name)
3、字符串处理 模板字符串:
var name="jack";
let str=`我的名字是${name}!`
console.log(str)
获取字符串是否包含某人字符 indexOf():找到字符首次出现位置,没有返回-1;includes():返回true或false 4、参数默认值、不定参数、拓展参数
默认参数:
a)以前使用或赋默认值:function(value){var name=value||" 默认值"}
b)es6在方法括号直接赋默认值function(value=" 默认值"){var name=value}
不定参数:
a)参数不固定:function count(a,b,...rest){}:如果调用: count(1,2,3,4,5,6):其中的参数,a=1,b=2,rest=[3,4,5,6]
拓展参数:
a)组装数组:var people=['Wayou','John','Sherlock']; var pere=[...people,"aaa","bbb"] console.log(pere) //["Wayou", "John", "Sherlock", "aaa", "bbb"] es5中使用arguments:
//arguments对象(function中参数数组,可多个参数。模拟重载)
function test() {
var dd= arguments.callee;
console.log(dd)
for (var i = 0; i < arguments.length; i++) {
alert(arguments);
}
}
test("name", "age")
5.对象相关:
json对象:key和value相同简写:{name:name},写为{name}
Object.assign() 对象浅复制;只能复制一层,想多层复制,不相互影响必须一层一层的复制。例如:
var oba={a:1,b:{name:"long",age:19}}
const obj=Object.assign({},oba)
obj.b=Object.assign({},oba.b) obj.b.age=10;
oba.b.name="dddd"
console.log(oba)//{a:1,b:{name:"dddd",age:19}}
console.log(obj)//{a:1,b:{name:"long",age:10}} 6、for of:输出的是值
var a=["a","b"] ;for (let v of a){console.log(v)} 7、数组相关: a)扩展运算符:var z=[1,2,3]
function tes(a,b,c){
console.log(a+b+c)
}
tes(...z)
b)扩展运算用法:
数组中最大值:var a=[22,33,11,21]; es5:Math.max.apply(null,a) 返回33; es6:Math.max(...a) 返回33
push函数:var a=[1,2,3];b=[5,6]: es5:Array.prototype.push.apply(a,b)//讲一个数组添加到另外一个数组
es6:a.push(...b)
数组的克隆:var a=[1,2,3]: es5:采用的concat,数组的拼接,拼接一个空值:var b=a.concat();
es6:const a=[1,2,3]; const b=[...a];也可以拼接;const c=[11,22] ; const d=[..a,...c]
(都是浅克隆,数组里面如果包含对象,也是指向同一个地址)
与解构赋值结合:const [first, ...rest] = [1, 2, 3, 4, 5] ; first // 1 ;rest // [2, 3, 4, 5]
const [first, ...rest] = [];first // undefined; rest // []
const [first, ...rest] = ["foo"]; first // "foo" rest // []
字符串:将字符串切割成数组
[...'hello'] 结果:[ "h", "e", "l", "l", "o" ]
|