常用函数类型和数据类型
1.常用函数类型
// 1.命名函数
function getName(username){
return 'Hello ' + username;
}
console.log(getName('关羽'));
// 2.匿名函数
//1.将函数当值赋给一个变量
let getUserName = function(username){
return 'Hello ' + username;
}
console.log(getUserName('张飞'));
//2. 声明并立即调用
console.log(function(username){
return 'Hello ' + username;
}('赵云')); //在{}后直接跟()调用
// 3.箭头函数,用来简化匿名函数的声明
// 转化方法
// 3-1. 去掉 function
// 3-2. 在参数列表与大括号之间使用 '=>'
// 如果只有一个参数,可以不写参数列表的括号
// 如果没有参数,括号必须加上
// 如果函数体只有一条语句, 大括号都可以不用
// 匿名函数
let sum = function(a,b){
console.log(a+b);
}
// 转化
sum = (a,b) => console.log(a+b);
//调用
sum(33,66);
// 总结
// 1. 如果函数需要多次调用, 用命名, 函数表达式, 都可以
// 2. 如果代码要求,必须遵循"先声明, 再调用"的规则, 那就必须用"函数表达式"
// 3. 如果只有完成一些特定的,一次性的工作, 不想留下任何痕迹, 用"IIFE", 模块
// 4. 如果调用函数时,需要一个函数充当参数,例如:回调, 就可以使用箭头函数来简化 匿名函数的 声明
2.数据类型
// 1. 原始类型: number, string, boolean,undefined, null
// 1.1 number
console.log(100);
// 1.2 string
console.log("马超");
// 1.3 boolean
console.log(20 > 5); // true
// 1.4 undefined
let a;
console.log(a); //undefined
// 1.5 null
console.log(null); //null
// 2. 引用类型: array, object, function
// 一个变量保存的集合,并非单值,访问时不能直接访问,必须通过这个变量的引用来访问
// 2.1 array
const arr = [1, 2, 3];
const arr1 = [1, [2, "超人", "abc"], true];
//访问
console.log(arr);
console.log(arr1[1][1]); //超人
// 引用类型判断不能用typeof
console.log(typeof arr); // object
console.log(Array.isArray(arr)); // true
// 2.2 object
// 先把对象想象成一个关联数组
let obj = {
id: 1,
arr: [2, "超人", "abc"],
name: "锦衣卫",
"my tel": 13888888888,
age: 18,
};
// 为了简化,并与数组区别,对象有自己的成员访问符: .
console.log(obj.username); //对象访问方式
console.log(obj["my tel"]); //数组访问方式
function getUser(obj) {
return "id = " + obj.id + ", name = " + obj.name + ", age = " + obj.age;
}
console.log(getUser(obj)); // id = 1, name = 锦衣卫, age = 18
//在对象中可以使用变量this来引用对象自身
obj = {
id: 1,
username: "jack",
num: [1, 2, 3],
isOk: true,
getInfo: function () {
return "id =" + this.id + ",username =" + this.username;
},
};
console.log(obj.getInfo);
//函数当返回值:闭包
function fn() {
let a = 1;
return function () {
//内部函数访问外部函数的值,导致外部函数不能释放,形成闭包
return a++;
};
}
console.log(fn());
console.log(fn());
//函数就是对象,对象就可以添加属性和方法
let fn1 = function () {};
fn1.myemail = "admin@php.cn"; //添加属性myemail
fn1.getEmail = function () {
console.log(this.myemail);
}; //添加方法