函数的声明
函数的声明有三种方式:
1、声明式
通过function命令声明
function fn (){}//function声明函数的关键字//fn是函数的名字(自己定义)//()中存放参数//{}中放执行的代码fn() //函数的调用
2、赋值式
通过变量赋值的方式,将函数赋值给变量。
var fn = function (){}
3、Function构造函数
var add = new Function()
注:如果同一个函数被多次声明,后面的声明就会覆盖前面的声明。
函数调用
函数的调用:使用圆括号运算符。函数名后面紧跟一对圆括号就会调用这个函数。 用法: 函数名()
注意: 定义完一个函数以后,如果没有函数调用,那么写在 {} 里面的代码没有意义,只有调用以后才会执行。
声明式与赋值式调用上的区别:
声明式函数: 调用可以在 定义之前或者定义之后**
fn() //可以调用//声明式函数function fn(){}fn() //可以调用
赋值式函数: 调用只能在 定义之后
fn() //报错//赋值式函数var fn = function(){}fn() //可以调用
原因是函数也存在函数名的提升:整个函数会像变量声明一样,被提升到代码头部。
所以使用声明式函数可以在定义之前调用,而赋值式只能在定义之后调用。
立即调用的函数表达式
有时,我们需要在定义函数之后,立即调用该函数。这时,你不能在函数的定义之后加上圆括号,这会产生语法错误
函数定义后立即调用的解决方法,就是不要让function出现在行首,让引擎将其理解成一个表达式。最简单的处理,就是将其放在一个圆括号里面。
(function(){ /* code */ }());// 或者(function(){ /* code */ })();
通常情况下,只对匿名函数使用这种“立即执行的函数表达式”。它的目的有两个:一是不必为函数命名,避免了污染全局变量;二是 IIFE 内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。
参数
函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数。
在定义函数和调用函数的时候都出现过(),而这个()就是存放函数的地方。
参数分为实参和行参。
- 行参
- 就是在函数内部可以使用的变量,在函数外部不能使用
- 每写一个单词,就相当于在函数内部定义了一个可以使用的变量(遵循变量名的命名规则和命名规范)
- 多个单词之间以
,分隔 ```javascript function fn(a){ console.log(a) }
function fn1(a,b){ console.log(a,b) }
- 如果只有行参的话,那么在函数内部使用的值个变量是没有值的,也就是 `undefined`- **行参的值是在函数调用的时候由实参决定的**2、实参- 在函数调用的时候给行参赋值的- 也就是说,在调用的时候是给一个实际的内容的```javascriptfunction fn(num) {// 函数内部可以使用 num}// 这个函数的本次调用,书写的实参是 100// 那么本次调用的时候函数内部的 num 就是 100fn(100)
函数的return语句
return 返回的意思,其实就是给函数一个 返回值 和 终断函数
遇到return语句,就直接返回return后面的那个表达式的值,后面即使还有语句,也不会得到执行。也就是说,return语句所带的那个表达式,就是函数的返回值。return语句不是必需的,如果没有的话,该函数就不返回任何值,或者说返回undefined。
function fn() {console.log(1)console.log(2)console.log(3)// 写了 return 以后,后面的 4 和 5 就不会继续执行了returnconsole.log(4)console.log(5)}// 函数调用fn()
