ES6 新特性

1、let 和 const

不同于var函数作用域letconst都是块级作用域,不具有变量提升的特性

变量提升:var关键字声明的变量,无论声明在

函数体中的何处,都会被是视为声明在函数的最顶部,这样有时容易导致出现一些问题

console.log(a); // undefined
var a = ‘hello‘;

// 上面的代码相当于
var a;
console.log(a);
a = ‘hello‘;

letconst声明的变量,不具有变量提升的特性

// 测试let
console.log(a); //会抛出异常:变量没有定义 Uncaught ReferenceError: t is not defined
let a = ‘hello‘;


// 测试const
console.log(c); // 会抛出异常:在变量初始化之前不能访问 Uncaught ReferenceError: Cannot access ‘c‘ before initialization
const c = "abc";

const声明的常量不能修改,且必须显示的初始化

// 定义一个常量c1
const c1 = "const"; 
// 给常量重新赋值
c1 = "const_str"; // Uncaught TypeError: Assignment to constant variable.


// 定义一个常量c2,没有显示进行初始化
const c2;
c2 = "abc" // Uncaught SyntaxError: Missing initializer in const declaration


// 而let和var都不需要显示进行初始化
let e;
e = 1;
console.log(e) // 1

var d;
d = 2;
console.log(d) // 2

 注意点:

  1. let 和 const 关键词声明的变量不具备变量提升(hoisting)特性
  2. let 和 const 声明只在最靠近的一个块中(花括号内)有效
  3. const 在声明时必须被显示赋值初始化
  4. 编程习惯:当使用const声明常量时,请使用大写变量名,如:CAPITAL_CASING

2、箭头函数(Arrow Function)

ES6中,箭头函数是匿名函数的一种简写形式,使用括号包裹参数,紧跟一个箭头符号=>,最后是函数体。

/**
 * 箭头函数基本形式:(形参列表) => { 函数体 };
 */


// ES6 之前的写法
var getPrice = function() {
    return 4.55;
};
console.log(getPrice());

// ES6 箭头函数的写法
var getPrice= ()=>{return 555};
console.log(getPrice());

箭头函数的简写形式

//*********************************************
// 如果形参列表只有一个参数,可以省略左侧的小括号
var fun = (a) => {
	return a;
}
fun(1);

// 简写形式
var fun = a => {
	return a;
}
fun(2);
//*********************************************


//*********************************************
// 如果函数体只有一行代码,可以省略右侧的花括号
var fun = (a, b) => {
	console.log(a+b);
}

// 简写形式
var fun = (a, b) => console.log(a+b);
//*********************************************


//*********************************************
// 如果函数体内只有一句return语句,可以省略花括号,且不写return关键字
var fun = () => { return 1;}

// 简写形式
var fun = () => 1;
//*********************************************

箭头函数的特性

// 箭头函数内部的this,永远和箭头函数外部的this 保持一致 
// 箭头函数不能使用this, 如果要使用对象中的变量,要用对象的名字.属性
// 箭头函数中没有独立的块级作用域,其作用域为其父级作用域

var student={
  name:‘alice‘,
  age:23,
  say:()=>{
    //  console.log(this.name);
    console.log(student.name);
  }
}

student.say();

ES6 新特性

上一篇:区间 k 大数查询


下一篇:day15-Python运维开发基础(json序列化模块、random / time / zipfile / OS模块函数)