Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
// 1.命名函数
function getName(username){
return 'hello' + username;
}
console.log(getName('彭于晏'))
// 2.匿名函数
// 第一种匿名函数定义方法
let getUserName = function(username){
return 'hello' + username;
}
console.log(getUserName('姜文'))
// 第二种定义方式:将声明与调用二合一,立即调用函数
console.log(
(function(username){
return 'hello' + username;
})('姜武')
)
// 3.箭头函数,用来简化匿名函数
// 3.箭头函数,用来简化匿名函数
// 原命名函数
function sum(a,b){
console.log(`${a+b}`)
}
// 改成匿名函数
let SUM=function(a,b){
console.log(a + b)
}
// 改成箭头函数
// 转化方法
// 1. 去掉 function
// 2. 在参数列表与大括号之间使用 '=>'
add=(a,b)=>{
console.log(`${a} + ${b}`)
}
// 如果只有一个参数,可以不用写参数括号
add1=a=>{
console.log(a + 9)
}
// 没有参数,括号必须保留
add2=()=>{
console.log(90 + 1);
}
sum(1,2);
SUM(3,4);
add(5,6);
add1(0);
add2();
// typeof 查看数据类型
console.log(100 + 200);
console.log(typeof 100, typeof 200);
console.log('hello ' + 'world');
console.log(typeof('hello ' + 100));//这里会发生隐式转换
//注意:null的类型是obj
// 数组
// 访问数据元素,必须通过数组的引用(数组名称arr)来访问(arr是一个访问入口)
// 数组成员 的索引是从0开始
const arr = [1, 'admin', [1, 2, 3], true];
console.log(arr);//结果Array(4)
console.log(arr[1]);//结果admin
console.log(arr[2][1]);//结果2
console.log(Array.isArray(arr));//true
// 对象
let obj = {
id: 1,
username: 'jack',
num: [1, 2, 3],
isOk: true,
'my email': '498668472@qq.com',
};
console.log(arr[1]);
console.log(obj['username']);
// 为了简化,并与数组区别,对象有自己的成员访问符: .
console.log(obj.username);
console.log(obj['my email']);
// 对象字面量
obj2 = {
id: 1,
username: 'jack',
num: [1, 2, 3],
isOk: true,
'my email': '498668472@qq.com',
// 将一个函数转为对象的方法,封装到对象中
getUser: function() {
// 在对象中,使用变量this来引用对象自身
return 'id =' + this.id + ', username =' + this.username;
},
};
console.log(obj2.getUser());
// 函数
// 函数是对象,也是一个值,可以当成参数传递,也可以当成返回值
console.log(typeof
function() {});
function f1(callback) {
console.log(typeof callback);
console.log(callback());
}
f1(function() {
return 'Hello 猪老师';
});
// 函数当返回值: 闭包
function f2() {
// a是 f2的私有变量
let a = 1;
return function() {
// return (a += 1);
// 而此时,子函数中的a并不是自己的,是父函数的
return a++;
};
}
console.log(f2());
const f = f2();
// console.log(f);
console.log(f());
console.log(f());
console.log(f());
console.log(f());
console.log(f());
console.log(f());
// 函数就是对象,对象就可以添加属性和方法
let f3 = function() {};
f3.myemail = 'admin@php.cn';
console.log(f3.myemail);
f3.getEmail = function() {
console.log(this.myemail);
};
f3.getEmail();
结论:闭包找到的是同一地址中父级函数中对应变量最终的值