声明变量:
- let(此变量不存在预解析)
在调用变量找不到let声明的变量时会直接出错is not defined
,而使用ECMA5.0的方法,使用var来进行声明变量,调用变量找不到var声明的变量时会提示undefined
let声明的变量不允许重复(在同一个作用域内) 出现重复声明的变量直接报错
var声明会以后面的为准(javascript代码执行的顺序从上到下导致)
变量let:
在ES6.0中,引用了块级作用域的概念
if(true){var a=1} console.log(a) 不报错
if(true){let a=1} console.log(a) 报错
同时var let 同一个变量名,出错
注意:在块级作用域中,变量只能先声明,再使用 - const(常量,固定)
常量:
const,声明常量,const声明的常量不允许重新赋值
const声明的常量必须初始化
const a; 报错
const a=1; 此常量无法更改
变量的解构
ECMA5.0定义变量的方式:
var a=1,b=3,c=4;
var arr=[1,2,3];
ECMA6.0中,
数组一般写法:
let/var [a,b,c]=[,2,3] ;
console.log([a,b,c]) //返回 undefined,2,3
带默认值的数组写法:
let/var [a=11,b=54545,c=123]=[,2,]
//对应的 [a,b,c]---->11,2,123
对象的解构:
需要注意的是,对象的解构赋值和对象内key的顺序没有关系
let {fun,bar}={
fun:'hello',
bar:'sss
}
或者:let {fun,bar}={
fun:'hello',
bar:'sss'
}
对象如果设置了别名,原来的名字会被别名替换
let {fun:abc,bar}={
bar:'sss',
fun:'hello', //这里不能写abc
}
console.log(abc,bar) 这里不能写fun
带默认值和别名的对象解构写法:
let {fun:abc='aaa',bar}={
bar:'sss',
}
console.log(abc,bar) // aaa,sss
Math对象解构:
let {cos,sin}=Math;
console.log(typeof cos)
//function类型, 必须为Math中已经存在的方法才可以进行解构
字符串解构:
let [a,b,c]='helo' console.log(a,b,c) //h e l
获取字符串的长度:
let {length}='hello' console.log(length) // 5
箭头函数:
ECMA5.0中传统函数的写法:
function foo(){
console.log();
}
ECMA6.0中箭头函数的写法:
let foo=()=>console.log();
ES5.0带参数和返回值的箭头:
function foo(num){
return num;
}
ES6.0带参数和返回值的箭头:
let foo=num=>num //第一个num形参,第二个num返回值,()可加可不加
let foo=(num,abv)=>{
let c=110;
console.log(num+abv+c) ;
}
//传递多个参数加(),多个函数体加{},单个函数体也可以加{}
ECMA5.0循环遍历 数组中的数据
var arr=[123,456,789];
arr.forEach(function(e,index){ console.log(e,index)})
//123 0 456 1 789 2
ES6.0:
let arr=[123,456,789];
arr.forEach((e,index)=> {
console.log(e,index)
})`
而对于普通函数和箭头函数使用上的最大区别,请在我的另一篇博文中慢慢评鉴
箭头函数和普通函数使用上的区别