es6 基本语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="testid">
测试div
</div>
<script src="http://blog.ropon.top/js/jquery.min.js"></script>
<script>
//1 let命令声明变量,但所声明变量只在let命令所在代码块内有效

var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
//a[6]();

//var存在变量提升现象,即变量可以在声明之前使用值为undefined
//console.log(aa);
var aa = 33;

//console.log(bb); //报错
let bb = 44;

let cc = 55;
//let cc = 66; //报错不允许重复声明

//块级作用域
var tmp = new Date();

function f() {
console.log(tmp);
if (false) {
var tmp = "test";
}
}

//f();

var s = "hello";
for (let i = 0; i < s.length; i++) {
console.log(s[i]);
}
//console.log(i);

//总结:let命令 不存在变量提升 不允许重复声明

//const命令声明变量不得改变值,也就是const一旦声明变量就必须立即初始化
//const dd; //报错
const ee = 66;

if (true) {
const ff = 5;
}
//console.log(ff);//报错
//与let命令一样,只在声明所在块级作用域内有效

//2 模板字符串 在反引号` `之间的字符串 若要在模板字符串中使用反引号,需要在前面加反斜线\转义
//如果使用模板字符串表示多行字符串,所有空格和缩进都会保留在输出之中
let gg = "test变量"
$("#testid").append(
`<p>模板字符串实例</p>${gg}
<p>\`Check Now\`</p>
<ul>
<li>111</li>
<li>222</li>
</ul>`
);

//3 箭头函数 基本语法 (=>) 定义函数
var func = a => a;
//等同于
var func = function (a) {
return a;
};

//使用一个圆括号()代表参数部分
var func = () => 5;
//等同于
var func = function () {
return 5
};

//多个形参
var sum = (num1, num2) => num1 + num2;
//等同于
var sum = function (num1, num2) {
return num1 + num2;
};

//注意 函数体内的this对象 是定义时所在的对象 而不是使用时所在的对象
var name = "ropon";
var person = {
name: "pengge",
age: 18,
//fav: function () {
//fav: () => {
fav() { //对象单体模式
console.log(this);
console.log(this.name);
}
};
person.fav();


function f1() {
setTimeout(() => {
console.log("id", this.id);
}, 1000);
}

var id = 22;
f1.call({id: 24});

//不能使用arguments对象 该对象在函数体内不存在
var person2 = {
name: "pengge",
age: 18,
fav: () => {
//console.log(arguments);//报错
}
};
person2.fav("test1", "test2");

class Person {
constructor(name="ropon12", age=18) {
this.name = name;
this.age = age;
}
showname() {
console.log(this.name);
}
showage() {
console.log(this.age);
}
}

let P = new Person();
P.showname();

</script>
</body>
</html>