JavaScript 基础(4)ECMAScript(基础语法)—— 函数

#一、函数的作用
函数可以封装任意多条语句,可以方便在任何地方,任何时候调用执行

二、函数的定义

函数有三种定义方式:

  • 函数声明方式
  • 函数表达式方式
  • 使用function构造函数

1.函数声明

函数声明定义函数是最常用的。
语法:

function functionName([arg0,arg1,arg2,...argn]){
    ...
}

例子:

//sum(1,2);
function sum(num1,num2){
    console.log(num1+num2);
}
//sum(1,2);

函数调用的位置随便,不受影响,这 涉及到函数声明提升 下面再将

说明:

  • function functionName是要定义的函数名,属于标识符
  • []中的arg0,arg1,…argn为函数的参数
  • []只是说明里面的内容不是必须的,不是语法

2.函数表达式

语法:

var functionName = function([arg0,arg1,arg2,...]){
    //要执行的语句
}

例子:

var sum = function(num1,num2){
    console.log(num1+num2);
}
sum(1,2);

函数调用的位置只能在声明后面

3. 使用Function构造函数

Function构造函数可以接收任意数量的参数,最后一个参数为函数体,其他的参数则枚举出新函数的参数。
语法:

var 函数名 = new Function("参数1","参数2",...,"参数n","函数体");


4.arguments

ECMAScript中的参数在内部用一个数组来表示,
在函数体中通过arguments对象来方法这个数组参数。
注意:

  • arguments对象只是与数组类似,并不是Array实例
  • []语法可以访问它的每一个元素
  • length属性确定传递参数的个数

三.函数声明提升 和 声明方式的选择

js引擎会在预编译时,也就是代码执行之前,将函数声明放到源代码的顶部,而变量赋值操作留在原来的位置。所以,即使函数声明在调用它的代码后,js引擎也能把函数声明提升到顶部。

常用的两种函数创建方式(第三种我没用过(- - !))

  • 函数声明
  • 函数表达式

函数声明

sum(1,2);
function sum(num1,num2){
    console.log(num1+num2);
}
//sum(1,2);

无论函数调用在函数声明前还是后,控制台都可以输出3,这就是函数声明提升的作用


函数表达式

sum(1,2);
var sum = function(num1,num2){
    console.log(num1+num2);
}

运行上面代码,会报错:Uncaught ReferenceError: sum is not defined(…),错误信息显示说sum没有被定义。 函数表达式定义的函数属于变量赋值操作,会被留在原地,不会享受函数声明提升到顶部的特权。
所有使用函数表达式,函数的调用必须是在函数表达式的后面。

函数定义方式的选择

  • 函数声明:推荐。js引擎在预编译时会进行函数声明提升。
  • 函数表达式:一般,函数调用要在函数定义之后。
  • Function构造函数:不推荐,这种方式会导致解析两次代码,影响性能。第一次解析常规的JavaScript代码,第二次解析传入构造函数的字符串。

猜你喜欢

转载自blog.csdn.net/weixin_39141044/article/details/80392004
今日推荐