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

细说函数与数据类型

程序员文章站 2022-05-21 23:23:21
...

细说函数与数据类型

函数类型

1.命名函数:命名采用动词+名词

  1. // 细说函数
  2. function getName(username) {
  3. return "hello " + username;
  4. }
  5. console.log(getName("小夫"));

2.匿名函数
执行方式有两种:立即执行和函数表达式(保存到变量中)

立即执行函数(IIFE)将声明和执行二合一,阅后即焚不会给全局环境造成任何污染,用来创建临时作用域。
立即执行:

  1. console.log(
  2. (function (username) {
  3. return "good morning " + username;
  4. })("小夫")
  5. );

函数表达式:

  1. const getName = function (username) {
  2. return "hello " + username;
  3. };

函数表达式的简化方案:箭头函数

去掉 function,在(…)与{…}之间使用=>进行连接

  1. const getUserName=(username)=>{
  2. return 'hello '+username
  3. }

如果函数中只有一个参数,()可以省略,如下

  1. const getFirstUsername=username=>{
  2. return 'hello '+username
  3. }

如果只有一条语句,可以不写大括号,因为只有一条语句,默认就是 return,return 也可以省略。

  1. const GET_NAME = i => i * 10;

使用场景: 1.如果函数需要多次调用,用命名,函数表达式都可以 2.如果代码要求,必须遵循“先声明,再调用的原则”,那就必须用“函数表达式” 3.如果只有完成特定的,一次性的工作,不想留下任何痕迹用 IIFE 立即执行函数 4.如果调用函数时需要一个函数充当参数,例如回调,就可以使用箭头函数进行简化匿名函数的声明

数据类型

  • 原始类型
    不可再分,是构成其他复合类型的基本单元,简单类型,基本类型:一个变量存一个值
    1.number 类型
    例如;123,456
    2.string 字符串类型
    例如:hello word,你好世界 3.布尔类型
    true,false
    4.undefined 类型
    undefined
    5.object 类型
    null
    动态语言,变量的类型,由他的值的类型来决定。
  • 引用类型
    定义:类似其他语言中的复合类型,集合类型。引用类型的数据由一个或多个相同或不同的原始类型构造成的。是一个典型的多值类型
    引用类型默认返回的都是对象,object,函数除外(返回的 function)

数组:

  1. const arr = ["name", 4, 58394];

数组的索引是从 0 开始递增的整数,0,1,2,3……
这样来判断一个数据是不是数组console.log(Array.isArray(array));

对象:更像是一个语义化的数组
const shopping = { phone: "智能手机", price: "998" };
可以这么来访问这个对象:console.log(shopping['phone']);
因为对象的属性名都是合法的标识符,可以使用’.’点来访问例如:
console.log(shopping.phone,shopping.price);效果和上方的效果一样。
但是如果对象的属性中出现了非法标识符,我们就必须采用上一种方法了,例如:
console.log(shopping["my money"]);
对象最吸引人的不是数组的语义化封装,而是对数据操作的封装,叫做方法(语法与函数一样的)

  1. const shopping = {
  2. phone: "智能手机",
  3. price: "998",
  4. myMoney: "10000",
  5. change: function () {
  6. let change = `买完${this.phone}还剩下${this.myMoney - this.price}元人民币`;
  7. return change;
  8. },
  9. };
  10. console.log(shopping.change());

实际使用中大多数是吧数组和对象组合起来用的
像这样:

  1. const buy = [
  2. { name: "good1", num: 1, price: 1000 },
  3. { name: "good2", num: 2, price: 1000 },
  4. { name: "good3", num: 3, price: 1000 },
  5. ];

函数(函数既是函数也是对象)

  • 函数是数据类型的好处

    1.可以当成普通值来使用,例如充当函数的参数,或者函数的返回值
    2.当参数就是回调函数,当返回值可以创建一个闭包
    3.js 中有很多高阶应用,都依赖这两个功能,这也是“高阶函数”的基本特征
    4.函数是 js 的一等公民,就是通过这个体现的。

应用场景 1:函数作为参数使用,回调

  1. // 回调
  2. function f1(huidiao) {
  3. console.log(huidiao());
  4. }
  5. f1(function(){return'call back sucess'})

应用场景 2:函数当成返回值,闭包

  1. function f2() {
  2. let i = 1;
  3. return function () {
  4. return i++;
  5. };
  6. }
  7. const f = f2();
  8. console.log(f());
  9. console.log(f());
  10. console.log(f());
  11. console.log(f());
  12. console.log(f());
  13. console.log(f());

函数也可以当成对象来用,对象有属性和方法,函数也有属性和方法。
函数当成对象有啥用?
用处太大了,整个 js 语言体系都靠它撑着
就算是你没学过编程·,至少听说过面向对象编程,对象可以被继承,实现代码复用。
而 js 就是基于原型,实现的继承,而原型,就是在函数上创建一个普通对象而已
class,构造函数他们都是基于函数是对象这个前提的