欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数 和类型

程序员文章站 2022-05-20 15:26:44
...

函数类型

命名函数

  • function fname(...){...}
  1. function user(a, b) {
  2. return a + b;
  3. }
  4. console.log(user(10, 20));
  5. // 1. `user` 函数的名字
  6. // 2. ` (a, b)` 函数的参数
  7. // 3. `return a + b;` 函数的返回值
  8. // 4. `user(10, 20)` 给函数 user 传值(10,20)

匿名函数

  • 匿名函数: 没有名字的函数叫匿名函数

1.函数表达式 const = function (...){...}

  • 把函数保存到变量(常量)中 -任何一个可以计算出确定的’值’的过程

  • ‘函数声明’,变成了 ‘变量声明’, 只不过,变量的值,是一个函数声明

  1. const getName = function (a) {
  2. return "Hello " + a;
  3. };
  4. console.log(getName("Ianren"));
  5. // 1. `getName` 常量的名字
  6. // 2. ` (a)` 函数的参数
  7. // 3. `"Hello " + a;` 函数的返回值
  8. // 4. `getName("Ianren")` 给常量`getName`的函数 传值("Ianren")
  9. // `let` 定义变量 `const` 定义常量

2.立即执行函数(IIFE)

  • 立即执行函数(IIFE) :执行方式 立即执行(声明 + 执行)2 合一 一起执行
  • 用完就不用了 一次性,不会给全局环境带了任何污染,用来创建临时作用域
  • console.log( (function(..){ ... })(...));
  1. console.log(
  2. (function (username) {
  3. return "Hello" + username;
  4. })("Ianren")
  5. );
  6. // 1. 直接把函数写在 `console.log()` 也就是直接调用函数
  7. // 2.`("Ianren")` 是为 `username` 传的值
  8. // ! 也可以写为
  9. (function (username) {
  10. console.log("Hello " + username);
  11. })("Ianren");

3.箭头函数

  • 只有一个参数,可以不写括号(...)
  • 只有一条执行语句,可以不写{}return 也可不写
  • this 与上下文绑定 ,是固定的,所以不能用作”构造函数”来创建对象
  1. let f1 = function (a, b) {
  2. return a + b;
  3. };
  4. console.log(f1(10, 30));
  5. // 使用箭头函数简化
  6. f1 = (a, b) => {
  7. return a + b;
  8. };
  9. console.log(f1(10, 30));
  10. // 1. 去掉 function
  11. // 2. 在参数和{}之间加 =>
  12. f1 = (a, b) => {
  13. return a + b;
  14. };
  15. console.log(f1(10, 30));
  16. // 只有一条 `return `的情况下 `{}` 和 `return` 不写
  17. // 只有一个参数 `()` 也可以不写
  18. f1 = (a, b) => a + b;
  19. console.log(f1(10, 30));

数据类型

原始类型 简单类型

  • 不可再分,是构成其他复合类型的基本单元
  • 一个变量存一个值
  1. 数字类型 number 123
  2. 字符串类型 string “你好”
  3. 布尔类型 boolean true
  4. undefined undefined 没有值
  5. null object 空

引用类型 复合类型

  • 是一个典型的:多值类型
    const a = [1, "你好", true];

    []包含多个数值,里面的值 用 , 分开

  • 引用类型,都是对象,默认返回值 object. 函数(function)除外

1.array 数组

  • 声明
    const a = [1, "你好" true];

  • 调用

  1. const arr = [1, "手机", 5000];
  2. console.log(arr);
  3. console.log(arr[0]);
  4. console.log(arr[1]);
  5. console.log(arr[2]);
  6. // 数组的索引是从0开始递增的正整数 0, 1, 2, 3,....
  7. // 分别调用值结果为
  8. // console.log(arr); [1, "手机", 5000]
  9. // console.log(arr[0]); 1
  10. // console.log(arr[1]); 手机
  11. // console.log(arr[2]); 5000
  12. // 判断数组类型用`typeof`;
  13. console.log(typeof arr);
  14. console.log(typeof arr[1]);

2.object 对象

  • 对象里面可以设置 属性,可以根据属性来调用其属性的值 name为属性 手机 为值
  1. const obj = { num: 1, name: "手机", price: 5000 };
  2. console.log(obj);
  3. console.log(obj["num"]);
  4. console.log(obj["name"]);
  5. console.log(obj["price"]);
  6. // 分别调用值结果为
  7. // console.log(obj); [1, "手机", 5000]
  8. // console.log(obj["num"]); 1
  9. // console.log(obj["name"]); 手机
  10. // console.log(obj["price"]); 5000
  11. // 简化写法
  12. console.log(obj);
  13. console.log(obj.num);
  14. console.log(obj.name);
  15. console.log(obj.price);
  16. //对象中出现非法标识符 必须用 `[]`
  17. obj = { "my email": "admin@php.com" };
  18. console.log(obj["my email"]);
  • 对象里面可以设置 属性,可以根据属性来调用其属性的值 name为属性 手机 为值
  • 属性类似用变量

2-1.对象里面包含函数

  • 属性用 total 设置
  1. let obj = {
  2. num: 1,
  3. name: "手机",
  4. price: 5000,
  5. total: function () {
  6. let str = obj.name + " 总计: " + obj.price * obj.num + "元";
  7. return str;
  8. },
  9. };
  10. console.log(obj.total());
  11. // 简化可以
  12. let obj = {
  13. num: 1,
  14. name: "手机",
  15. price: 5000,
  16. total: function () {
  17. let str = `${obj.name} 总计: ${obj.price * obj.num} 元`;
  18. return str;
  19. },
  20. };
  21. console.log(obj.total());
  22. /// 这里要用反引号 "``" (数字1前面的)
  23. ///反引号声明的模板字符串,可以插入变量/表达式.这叫"插值"

2-2.this

  • 在对象内部,使用当前对象的一个引用,这样才独立于外部对象
  • this :始终与当前对象绑定(执行环境 / 执行上下文)
  1. let obj = {
  2. num: 4,
  3. name: "手机",
  4. price: 5000,
  5. total: function () {
  6. let str = this.name + " 总计: " + this.price * this.num + "元";
  7. return str;
  8. },
  9. };
  10. console.log(obj.total());
  • let str = this.name + " 总计: " + this.price * this.num + "元";
  • 这里面 把obj 换成了 this,以后可以直接单独改变量名称.

3.函数 function

  • 函数即使 函数 也是 对象
  1. 函数当参数使用,回调
  1. function f1(callback) {
  2. console.log(callback());
  3. }
  4. f1(function () {
  5. return "hello";
  6. });
  1. 函数当返回值使用 闭包
  1. function f2() {
  2. let a = 1;
  3. return function () {
  4. return a++;
  5. };
  6. }
  7. console.log(f2());
  8. const f = f2();
  9. console.log(f);
  10. console.log(f());
  11. console.log(f());
  12. console.log(f());
  13. console.log(f());
  14. console.log(f());
  15. console.log(f());
  1. 函数当成对象方法