1.7JavaScript语言的函数(Function)

1.函数定义

函数定义是 Function 类型的实例。

1.1函数声明

function 函数名(值形参名, 默认值形参名 = 默认值, ...数组形参名) {
  //函数体
}

1.2函数表达式

注意:命名函数表达式的右侧依然是函数表达式,不是函数声明。

//命名函数表达式
let f = function f2(形参名) {
  //函数体
};

//匿名函数表达式
let f = function (形参名) {
  //函数体
};

注意:命名函数表达式的函数名 f2 的作用域仅仅为函数体,比如可用于函数递归,但不可以在函数体外使用。

const f = function f2() {
  return 1;
};

console.log(f());   // 1
console.log(f2());  // 报错

1.3箭头函数表达式

没有形参或多个形参时必须使用圆括号 () ,只有一个值形参时可以省略圆括号 (),只有一个默认值形参或者只有一个剩余形参时不可以省略圆括号 ()

如果有花括号 {},则花括号 {} 内就跟普通函数一样。

如果没有花括号 {},则胖箭头 => 后面就只可以为单个表达式。因为 return 关键字只可以被用在函数体内,此时不可以使用 return 关键字。而且,箭头函数会隐式地将此单个表达式的值返回给此箭头函数的调用者。 另外,如果表达式为一个对象字面量,则需要将此对象字面量放在一对圆括号 () 中,以避免解释器分不清花括号到底是函数体的花括号还是对象字面量的花括号。

let f = (形参名) => { 
  //函数体
};

2.函数作用域

//全局函数
function f() {
}

function f1() {
  //局部函数
  function f2() {
  }
}

3.函数引用表达式

函数名;

4.形参分类

注意:在函数体调用数组形参时,数组形参名的前面无 ...

名称描述
值形参按位置传递
默认值形参按位置传递
...数组形参用于收集多余的位置实参

5.函数调用表达式

函数名();

实参的传递只支持按位置传递方式,不支持按命名传递方式(可以使用对象字面量解构赋值模拟)。

注意:不给值形参传递值,相当于给值形参传递了 undefined 值。不给剩余形参传递值,相当于给剩余形参传递了空数组。

注意:给默认值形参不传递或传递 undefined 值,都会触发默认值形参的默认值。给默认值形参传递 null 值,不会触发默认值形参的默认值。

//按位置传递方式
函数名(实参);

6.返回值

参考 return 语句。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/javascript/javascriptlang/4731.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2020年8月6日 20:07
下一篇 2020年8月8日 19:13

相关推荐

  • 2.4JavaScript类型之符号(Symbol)

    一个符号实例用于表示一个唯一的标识符。 1.创建符号实例 注意:符号实例不支持字面量创建方式。 注意:符号实例不支持 new Symbol() 创建方式。 Symbol() 函数可选地接受一个字符串实参,字符串实参仅仅作为对符号实例的描述,将来可以通过这个字符串实参来调试代码,不影响任何事情。 Symbol() 函数的…

  • 2.3JavaScript类型之字符串(String)

    1.单引号和双引号字符串字面量 JavaScript 语言的单引号和双引号字符串字面量语法上没有区别,所以以下一并讲解。 单引号和双引号字符串字面量支持所有转义序列。 单引号和双引号字符串字面量不支持字符串插值。 单引号和双引号字符串字面量不支持隐式的换行符。 2.模板字面量(Template Literal) 模板字…

  • 1.4JavaScript语言的类型(Type)

    JavaScript 语言的类型分为:原始(primitive)类型 和 引用(reference)类型。 原始类型:数值类型、大整数类型、布尔类型、字符串类型、符号类型、Undefined类型、Null类型。 引用类型:对象类型、函数类型、数组类型、映射类型、集合类型。 1.数值(Number)类型 数值类型遵循IE…

发表回复

登录后才能评论