函数
- 如果函数需要多次调用, 用命名, 函数表达式, 都可以
- 如果代码要求,必须遵循”先声明, 再调用”的规则, 那就必须用”函数表达式”
- 如果只有完成一些特定的,一次性的工作, 不想留下任何痕迹, 用”IIFE”, 模块
- 如果调用函数时,需要一个函数充当参数,例如:回调, 就可以使用箭头函数来简化 匿名函数的 声明
命名函数
function getName(username) {
return 'Hello ' + username;
}
console.log(getName('猪老师'));
匿名函数
声明方式1,将匿名函数当成值赋给一个变量
let getUserName = function(username) {
return 'Hello ' + username;
};
console.log(getUserName('王老师'));
声明方式2,将声明与调用二合一:立即调用函数,IIFE(简写)
console.log(
(function(username) {
return 'Hello ' + username;
})('张老师')
//表达式,是用一对括号包住的
);
箭头函数,用来简化匿名函数的声明
转化方法,去掉
function
,在参数列表与大括号之间使用 ‘=>’//转换前
let add = function(a, b) {
console.log(a + b);
};
//转换后
add = (a, b) => {
console.log(a + b);
};
如果只有一个参数,可以不写参数列表的括号
add = a => {
console.log(a + 88);
};
如果没有参数,括号必须加上
add = () => {
console.log(34 + 88);
};
如果函数只有一条语句,大括号都可以不用.
add = () => console.log(34 + 88);
add();
数据类型
原始类型
包含:number , string , boolen , undefined , null
引用类型,array , object , function
一个变量保存的是一个集合,并非单值,访问时不能直接访问,必须通过这个变量的引用来访问
数组:array
//访问数据元素,必须通过数组的引用(数组名称arr)来访问(arr是一个访问入口)
//数组成员的索引是从0开始的
const arr = [1, 'admin', [1, 2, 3], true];
console.log(arr);
console.log(arr[1]);
console.log(arr[2][1]);
//数组类型判断不能用typeof,得用Array.isArray(数组)
console.log(Array.isArray(arr));
对象:object
let obj = {
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(obj['username']);
//为了简化,并与数组区别,对象有自己的成员访问符:.
console.log(obj.username);
//如果对象中有非法键名,我们只能使用数组的方式访问
console.log(obj['my email']);
//对象是可以将数据与函数封装到一起,做为一个独立的编程单元
//就是上面的getUser的方式
函数: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());
// 函数就是对象,对象就可以添加属性和方法
let f3 = function () {};
f3.myemail = 'admin@php.cn';
console.log(f3.myemail);
f3.getEmail = function () {
console.log(this.myemail);
};
f3.getEmail();