前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 学习-7.函数定义的几种方式

JavaScript 学习-7.函数定义的几种方式

作者头像
上海-悠悠
发布2022-05-17 19:08:50
8310
发布2022-05-17 19:08:50
举报
文章被收录于专栏:从零开始学自动化测试

前言

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

函数声明

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

代码语言:javascript
复制
function 函数名称([参数]) {
    // 执行代码
}

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

代码语言:javascript
复制
function fun1() {
    // 执行代码
    console.log('hello')
}

// 调用函数
fun1()   // hello

函数中使用return 获取返回值

代码语言:javascript
复制
function fun1() {
    // 执行代码
    return 'hello world'
}

// 调用函数
var r = fun1()  // 获取函数返回值
console.log(r)

函数声明提升

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

代码语言:javascript
复制
var r = fun1()  // 获取函数返回值
console.log(r)

// 函数声明会被提升
function fun1() {
    // 执行代码
    return 'hello world'
}

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

函数表达式

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

代码语言:javascript
复制
var 变量 = function([参数]) {
    // 执行代码
};

使用示例

代码语言:javascript
复制
var fun2 = function () {
    return 'hello world'
};
console.log(fun2());  //hello world

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
var person = {
    firstName: "John",
    lastName: "Doe",
    address: function () {
        // do something...
        return '上海市'
    }
};

a = person.address(); 
console.log(a);     // '上海市'

Function 构造函数

使用new Function()构造函数

代码语言:javascript
复制
var 变量 = new Function('x', 'y', 'return (x+y)');

使用示例

代码语言:javascript
复制
// 构造函数
var fun3 = new Function('x', 'y', 'return (x+y)');

console.log(fun3(2, 3))  //5

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

代码语言:javascript
复制
function fun3(x, y) {
    return x+y
}

console.log(fun3(2, 3)); //5

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

方法覆盖

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

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

代码语言:javascript
复制
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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 函数声明
  • 函数声明提升
  • 函数表达式
  • Function 构造函数
  • 方法覆盖
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档