1

ES6新增的三个重要属性let const =>

2017-07-18  本文已影响31人  哼_

let

用let声明的变量,没有变量提升###

let a = "zhar";
console.log(a);//输出结果是 zhar

但如果是

console.log(a);//输出结果是 a is not defined
let a = "zhar";
//这个说明, let 声明的变量,跟 var 声明的变量不同,let 声明的变量没有变量提升

let声明的变量是块级作用域,是局部变量

var arr = [];
for(let i=0;i<5;i++){
    arr[i] = function(){
        console.log(i);
    }
}
arr[4]();  //输出的结果是4,如果arr[3]();输出的结果就是3;

对比以下代码看看:

var arr = [];
for(var i=0;i<5;i++){
    arr[i] = function(){
        console.log(i);
    }
}
arr[4]();//输出结果是5  不管arr的下标如何改变,结果都是5;

var 和 let 的区别

var  b = 10;
var  b = 20;
console.log(b);//结果是20;  
let b = 10;
let b = 20;
console.log(b);//结果就是b is declard( b 已经被声明过了);

再来一个例子 var 定义的是全局变量

d = 10;
var  d ;
console.log("d=",d);//输出结果是10;

如果换成let let 定义的是区域变量.所以用了let 不会担心变量名称的重复使用

d = 10;
let  d ;
console.log("d=",d); //输出结果是  d is not defined
var  e = 100;
function fun(){
    let e;
    e=200;
    console.log(e);
}
fun();//暂时性死区 
// 使用 let 声明的变量 不受外部的同名变量的影响  输出结果是200
//如果let  e;放在e=200;的后面,就会报错,e is not defined

Const

const是声明常量的 const是constant单词的简写

var PI = 3.14;//常用大写单词表示这是一个常量;
//ES6  新增了常量的写法
const PI2 = 3.14;//正确写法
//PI2 = 2.15;  不可更改,这样写会报错,常量 是不可变的,

const p ;// 一旦声明需立即赋值,不可更改,其他与let一致.不赋值也会报错 

=>箭头函数

箭头函数不会导致作用域的更改
保留当前的作用域,实用箭头函数声明的函数,
其作用域为 声明时所在的位置(作用域)

箭头函数的好处: 作用域已经指向了外层,不再像ES5的函数,函数内部的是一个局部函数,变量\作用域指向的是内部函数的作用域的对象,使用箭头函数以后,不仅语法更加简洁,而且,this指向了外部的环境

箭头函数不能使用 new
箭头函数 不能使用 arguments

//是一种新的声明函数的方式
function fun(){
    return  100;
}
console.log(fun()); //以前的写法

let foo = () => 10;
console.log(foo());//箭头函数的写法

let bar = (a,b)=> a*b;
console.log(bar(11,12));//也可以传参数

let aa = (a,b)=>{
    return a+6+b;
}
console.log(aa(12,11)); //可以return

//回调函数
function b(callback){
    callback();
}
b(function(){
    console.log(1111);
})
b(()=>{console.log(222)});
b(()=>console.log(33));//可以传回调函数

let obj = {
    name:"zhar",
    say : function(){
        console.log(this.name);
        setTimeout(()=> console.log(this.name),0)
    }
}
obj.say();
上一篇下一篇

猜你喜欢

热点阅读