ES6的基本使用 1、export default 和 export 区别 相同点:export与export default均可用于导出常量、函数、文件、模块; 差异:一个文件或模块中,export、import可以有多个,export default仅有一个,
1、export default 和 export 区别
相同点:export与export default均可用于导出常量、函数、文件、模块;
差异:一个文件或模块中,export、import可以有多个,export default仅有一个,导入方式不同
a.export
//a.js
export const str = "blablabla~";
export function log(sth) {
return sth;
}
对应的导入方式:
//b.js
import { str, log } from 'a'; //也可以分开写两次,导入的时候带花括号
b.export default
//a.js
const str = "blablabla~";
export default str;
对应的导入方式:
//b.js
import str from 'a'; //导入的时候没有花括号
2、let(变量)和const(常量)
在es5中var定义的变量存在变量提升,es6中使用的let不存在变量提升
console.log(i);
var i = 10;//10
console.log(s);
let s = 20;////ReferenceError: can't access lexical declaration `s' before initialization
函数提升
es5中无论if语句是否执行,在if语句内的函数声明都会提升到当前的作用域的顶部而得到执行,es6支持块级作用域,无论是否进入if,内部的函数都不会影响到外部的函数
每个代码块中即同一个作用域中,每个变量只能使用let定义一次
let声明变量,值可以改变。const声明常量,值不可改变(使用const时,常量最好使用大写)
const只保证常量名指向的地址不变,并不能保证地址的数据不变,如果想把对象冻结数据不可改变,可使用Object.freeze(obj)
const a = {};
a.name = 'gary';
console.log(a.name); //gary
const b = Object.freeze({});
b.name = 'bob';
console.log(b.name); //undefine
