EcmaScript笔记
coderhyh 2/10/2022 笔记EcmaScriptjs
# ecmaScript
# 变量命名规范
使用变量前要先声明
命名规范
1.首字符必须是字母、$、_
2.其余字符必须是字母、$、_、数字
3.不能是关键字、保留字(for var if break class top async await)
4.驼峰命名 userName myParentName
1
2
3
4
5
6
2
3
4
5
6
# 函数参数集合
arguments
# 函数练习
reduce
var arr = [1, 2, 3, 4, 5];
function reduce(arr, fn, pre) {
for (let i = 0; i < arr.length; i++) {
pre = fn(pre, arr[i]);
}
return pre;
}
let total = reduce(arr, function(pre, num){
return pre * num;
}, 1)
console.log(total);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
filter
function filter(arr,f){
var res=[];
for(var i=0;i<arr.length;i++){
if(f(arr[i])){
res.push(arr[i]);
}
}
return res;
}
var res=filter([1,2,3,4,5,6],function(item){
return item>2&&item<6;
})
console.log(res);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
map
function map(arr, fn) {
let newArr = [];
arr.forEach(e => {
newArr.push(fn(e));
});
return newArr;
}
let arr1 = [1, 2, 3, 4, 5];
let a = map(arr1, function (n) {
return n * n;
});
console.log(a);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 函数递归流程控制
function loop() {
var fns = arguments;
var i = 0;
function a() { //调用下一个函数
i++;
fns[i](a);
};
arguments[0](a); //调用第一个函数
}
// 参数
loop(function (next) {
console.log(1);
next();
}, function (next) {
console.log(2);
next();
}, function (next) {
console.log(3);
next();
}, function () {
console.log(4);
})
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 变量提升
// 先提升var声明的变量
console.log(f);// word函数体
function f(){
console.log("hello")
}
function f(){
console.log("world")
}
var f=10;
-------------
var x = 10;
function fun() {
console.log(x); //undefined
var x = 20;
console.log(x);//20
}
fun();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 函数名称
function f(){//声明变量 f 也是函数的名字
alert("hello");
}
//只要不是以上声明函数的方式
//那么就 不是变量
if(function f(){}){
console.log(f);//报错 未定义
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 递归练习
九九乘法表
function tool1() {
let i = 1;
function col() {
let j = 1;
let str = '';
row();
console.log(str);
if (++i <= 9) {
col();
}
function row() {
str += j + '*' + i + '=' + i * j + '\t';
if (++j <= i) {
row();
}
}
}
col();
}
tool1();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
汉罗塔
// 汉罗塔
function move(n, a, b, c) {
if (n == 1) {
console.log(a + '-->' + c);
return
}
move(n - 1, a, c, b)
console.log(a + '-->' + c);
move(n - 1, b, a, c)
}
move(1, 'A', 'B', 'C');
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11