1、数据的显式声明
let:块作用域变量,仅仅限于函数块级,不可以重复申明同一个变量
var:变量,全局或者函数块,在全局声明时会创建window对象属性,可以多次声明同一个变量
const:常量
三者存在作用域,值,可写性三方面的不同
值类型:
应用类型
2、使用赋值模板声明一批变量(ES6)
使用数组对数组的声明-赋值方式
var [a, b] = [1, 2];
console.log(a);
console.log(b);
var [x, y] = Array(
{
'name': 'zhangsan',
'age': 13,
'address': 'beijing'
},
{
'name': 'lisi',
'age': 15,
'address':'hebei'
}
)
console.log(x.name);
console.log(y.address);
又如:
使用数组解构赋值
var [x, y, ...more] = [1, 2, 5, 6, 7, 8, 9];
console.log(x);
console.log(y);
console.log(more);
对象解构2
var { x, y, ...more } = { x: 122, y: 133, z: 444 }
console.log(x);
console.log(y);
console.log(more);
3、转义
4、模板字面量
模板字面量使用` `反引号表示,并且使用${…}这种方式来使用变量
var str = "hello world";
console.log(`let's say ${str}`);
5、函数定义
不定量函数参数
function fun1(arg1,arg2,...more) {
for (var i in arguments) {
console.log(arguments[i]);
}
}
fun1("hello", "world",1,3,"!");
函数声明指定默认值
function fun1(arg1, arg2 = 100) {
console.log(arg1 + " " + arg2);
}
fun1("hello", "world");
fun1("hello");
又如:
function fun1(arg1, ...[m,n=200,z]) {
console.log(m+" "+n);
}
fun1("hello", "world");
6、表达式运算
es6的基本表达式
数组字面量:[…]
对象字面量:{…}
函数字面量:一般匿名函数,箭头函数,类和生成器
表达式分组运算:(…)
7、解构赋值
<script>
//把3,4分别赋值给a,b
var [a,b]=[3,4];
console.log(a);
console.log(b);
//对象风格的赋值
var {x,y}={x:'xx',y:'yy'};
console.log(x);
console.log(y);
//
var obj={x:'xxx'}//对象赋值给obj
console.log(obj);//打印一个对象
A=[obj];//赋值一个对象数组
console.log(A);//打印一个数组
var[{x}]=A;//把一个对象数组赋值给另一个对象数组
console.log({x});//打印对象数组的一个元素
console.log(A[0]);//结果同上
console.log({x}.x);//打印对象数组第一个元素的x键值
console.log(A[0].x);//结果同上
//成员深度遍历
var {p1:{p2:xx}}={p1:{p2:'zhangsan'}};
console.log(xx);//输出zhangsan
//隐式取tostring
var ac= {toString:x}=1;
console.log(typeof(ac));
8、匿名函数与箭头函数
<script>
var myfun=function () {
console.log('普通匿名函数');
}
var myfun1=()=>{
console.log('箭头函数也是匿名函数');
}
//()内为参数列表,如果只有一个参数可以省略括号
var myfun2=parm=>{
console.log('一个参数的箭头函数'+parm);
}
//一个参数,一行函数体的,可以省略小括号和大括号
var myfun3=parm=> '一行函数体'+parm
//一个参数,一行函数体的,可以省略小括号和大括号
var myfun4=parm=>{ return '一行函数体,但如果包含return则需要使用大括号'+parm}
myfun();
myfun1();
myfun2('参数')
myfun3('参数')
console.log(myfun4('参数'));
</script>
9、es6使用函数的形式来创建类及调用类对象
<script>
function myfun(){
name;
console.log('this is myfun');
}
var myfun1=new myfun();
console.log(typeof(myfun1));
myfun1.name='zhangsan';
console.log(myfun1.name);
</script>
10、…三个点的展开语法
<script>
var foo=(x,y,z)=>x+Math.pow(y,z);
console.log(foo(100,...[3,4]));//展开数组作为参数
var arr=[100,33,55];
console.log('2',3,4,...arr,44);//arr数组被展开打印
var obj={name:'zhaangsan',age:19}
console.log({message:'hello',...obj});//obj被展开,并被放入元素中
var obj2={message:'world',...obj}
console.log(obj2.message);
console.log(obj2.name);
console.log(obj2.age);
</script>
11、匿名函数的三种调用方法
<script>
var myfun=function(){
console.log('匿名函数的第1种调用方法');
};
myfun();
(function(){
console.log('匿名函数的第2种调用方法');
})();
(function(){
console.log('匿名函数的第3种调用方法');
}());
void function(){
console.log('匿名函数的第4种调用方法');
}();
</script>
12、break在标签化语句中跳出
<script>
var i=110;
console.log(i);
mark:{
console.log('mark begin');
if(i>100){
break mark;
}
else{
console.log('i am in mark');
}
}
console.log('i am out mark');
</script>
13、声明模块
- 1、默认名导出模块
export default ...
- 2、具名导出变量
export let name1,name2=..,..,nameN
- 3、具名导出函数声明或类声明
export function 函数名(){}
4、导出指定模块的名字(聚合多个模块的到出名)
export … from ‘模块’
14、导入模块
- 1、简单装载
import ‘模块名’
- 2、命名导入
imort 默认名 from 模块名
import { 导入列表名} from 模块名
- 3、名字空间导入
import * as 空间别名 from 模块名
- 4、默认导入的扩展形式
import 默认导入,... from “模块名”