• JavaScript 学习7.函数定义的几种方式 上海


    前言

    JavaScript中函数定义基本分3种方式:函数声明,函数表达式,构造函数。

    函数声明

    函数声明使用function 关键字, 格式如下

    function 函数名称([参数]) {
        // 执行代码
    }
    

    函数声明后,它不会自己执行,需要调用才会执行,调用函数使用函数名称加括号,如

    function fun1() {
        // 执行代码
        console.log('hello')
    }
    
    // 调用函数
    fun1()   // hello
    

    函数中使用return 获取返回值

    function fun1() {
        // 执行代码
        return 'hello world'
    }
    
    // 调用函数
    var r = fun1()  // 获取函数返回值
    console.log(r)
    

    函数声明提升

    之前学习变量的时候,学到一个词:"声明提升",函数声明也会被提升。
    "hoisting(声明提升)":函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。

    var r = fun1()  // 获取函数返回值
    console.log(r)
    
    // 函数声明会被提升
    function fun1() {
        // 执行代码
        return 'hello world'
    }
    

    函数声明的名称fun1会被提升到最顶部,所以上面代码不会报错,一般习惯上我们是先声明函数后调用。

    函数表达式

    我们可以在var 定义一个变量的时候,给它赋值一个函数,function声明的函数后面没有函数名称,这实际上就是匿名函数。
    将匿名函数赋值给一个变量就是函数表达式

    var 变量 = function([参数]) {
        // 执行代码
    };
    

    使用示例

    var fun2 = function () {
        return 'hello world'
    };
    console.log(fun2());  //hello world
    

    需注意的是var的变量可以提升,函数表达式不会提升

    console.log(fun2);  //undefined
    console.log(fun2());  //Uncaught TypeError: fun2 is not a function
    
    var fun2 = function () {
        return 'hello world'
    };
    

    上面代码直接调用函数会报错Uncaught TypeError: fun2 is not a function

    对象里面的函数属性也会用到匿名函数

    var person = {
        firstName: "John",
        lastName: "Doe",
        address: function () {
            // do something...
            return '上海市'
        }
    };
    
    a = person.address(); 
    console.log(a);     // '上海市'
    

    Function 构造函数

    使用new Function()构造函数

    var 变量 = new Function('x', 'y', 'return (x+y)');
    

    使用示例

    // 构造函数
    var fun3 = new Function('x', 'y', 'return (x+y)');
    
    console.log(fun3(2, 3))  //5
    

    实际上我们没必要用到构造函数,以上构造函数等价于

    function fun3(x, y) {
        return x+y
    }
    
    console.log(fun3(2, 3)); //5
    

    在 JavaScript 中,很多时候,你需要避免使用 new 关键字。

    方法覆盖

    当有2个相同名称的函数,但是传参不一样,JavaScript 中没有重载,python中也没有重载, java中有重载

    在一个Java类中,定义多个同名的方法,如果方法名相同,方法参数不同,包括参数的类型和个数都不同,叫做方法的重载。调用重载方法时,Java 编译器通过检查调用的方法的参数类型和个数选择一个恰当的方法。

    function fun4() {
        return 'hello'
    }
    
    function fun4(x, y) {
        var s = x + y
        console.log(s)
        return 'hello world'
    }
    
    console.log(fun4())   // hello world
    console.log(fun4(2, 3))  // hello world
    

    重名的函数后面的会覆盖前面的。

  • 相关阅读:
    使用PeopleSoft 异步操作设置步骤
    如何在Oracle数据库中查看哪些用户在执行哪些SQL
    PeopleSoft单点登录工作原理
    登录PeopleTools 提示ora-00942表视图不存在 select xxx from sysadm.psoprdefn
    比较完整的PeopleSoft工具表名
    如何查看一台服务器是虚拟服务器还是物理机
    Vue H5 History 部署IIS上404问题
    asp.net core 3.0中webapi post请求返回http 400
    目前流行前端几大UI框架
    entity-framework-core – 实体框架核心RC2表名称复数
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/16279278.html
Copyright © 2020-2023  润新知