函数

函数概念

函数是定义一次但却可以调用或执行任意多次的一段 JS 代码。函数有时会有参数,即函数被调用时指定了值的局部变量。 函数常常使用这些参数来计算一个返回值, 这个值也成为函数调用表达式的值。

函数对任何语言来说都是一个核心的概念。 通过函数可以封装任意多条语句, 而且可以在任何地方、任何时候调用执行

函数定义(声明)

function 函数名(){
	函数体
}

JavaScript 使用关键字 function 定义函数。
函数可以通过声明定义,也可以是一个表达式。
函数名的命名规范和变量名命名规范一样
函数声明后不会立即执行,会在我们需要的时候调用到。

实例:

function myFunction(a, b) {
    return a * b;
}

函数调用

  1. 函数名();

注意:函数调用放在定义的前后均可以

  1. 函数的调用顺序与定义顺序:
    要遵循执行顺序结构
showName();
   function showName(){
     document.write('');
     }

函数表达式

JavaScript 函数可以通过一个表达式定义。
函数表达式可以存储在变量中:
实例:

var x = function (a, b) {return a * b};

在函数表达式存储在变量后,变量也可作为一个函数使用:
实例:

var x = function (a, b) {return a * b};
var z = x(4, 3);

以上函数实际上是一个 匿名函数 (函数没有名称)。
函数存储在变量中,不需要函数名称,通常通过变量名来调用。
上述函数以分号结尾,因为它是一个执行语句.

Function() 构造函数

函数可以通过内置的 JavaScript 函数构造器(Function())定义。
实例:

var myFunction = function (a, b) {return a * b}

var x = myFunction(4, 3);

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

函数提升

提升(Hoisting)是 JavaScript 默认将当前作用域提升到前面去的的行为。
提升(Hoisting)应用在变量的声明与函数的声明。
因此,函数可以在声明之前调用:

myFunction(5);

function myFunction(y) {
    return y * y;
}

使用表达式定义函数时无法提升.

函数参数

写在函数名后的()里的内容即参数.
参数可以有多个,参数之间用“,”隔开、
定义时的参数称为 形参
调用时的参数称为 实参
不限制:不限参数个数,不限参数类型

function  自定义函数名(形参1,形参2......){
                  函数体
}

注意:一般情况下,形参与实参的数量应保持一致

参数规则

JavaScript 函数定义显式参数时没有指定数据类型。
JavaScript 函数对隐式参数没有进行类型检测。
JavaScript 函数对隐式参数的个数没有进行检测。

函数对象

  • 属性:
    argument:参数 能接受到的所有参数
    length:长度 接收到的是参数的个数
  • 在JavaScript中,可以引用对象的值。
    因此我们在函数内部修改对象的属性就会修改其初始的值。
    修改对象属性可作用于函数外部(全局变量)。
    修改对象属性在函数外是可见的。
  • 全局对象
    当函数没有被自身的对象调用时 this 的值就会变成全局对象。
    在 web 浏览器中全局对象是浏览器窗口(window 对象)。
    该实例返回 this 的值是 window 对象:

带返回值的函数

带参和不带参的函数,都没有定义返回值,而是调用后直接执行的。实际上,任何函数
都可以通过 return 语句跟后面的要返回的值来实现返回值。

<script type="text/javascript">
         function showName(parameters){
         var  results=somestaments;
        return  results;
}
</script>

results:函数中的局部变量
return:函数中返回变量的函数
注意的是:返回值在调用函数时不是必须定义的。

函数的嵌套

所谓函数的嵌套即在函数内部再定义一个函数,注意可以使内容函数获得外部函数的参数以及函数的全局变量。
函数嵌套的语法格式如下:

<script  type="text/javascript">
var  outter=10;
function  functionName(parameters1,parameters2){
          function  InnerFunction(){
          somestatements;
         }
     }
</script>     

functionName:外部函数名称
InnerFunction:内部函数名称

匿名函数

  • 匿名函数就是没有名字的函数。
function(){
   函数体
}
  • 匿名函数:1、自我执行 2、赋值
(function(a,b){
          	console.log(a+b);
            })(2,5);      //自我执行
输出结果:
     7
  • 带有返回值
  var res=(function(a,b){
                	return a*b;
                 })(3,5);
                 console.log(res);
  • 匿名函数的调用:
    (1)通过表达式自我执行
(function(){
  alert(“Jack”);
})();
  • 把匿名函数赋值给变量
var box=function(){
   alert(“Jack”);
}

调用:
box();

求10的阶乘用递归函数:

function getNum(n){
        if(n==1){
                  return   1;
             }
             return  n*getNum(n-1);
             }
             var num=getNum(10);
             console.log(num);

递归函数

  1. 递归函数就是函数在自身的函数体内调用自身,使用递归函数时,如果处理不当将会使程序进入死循环,递归函数只在特定的情况下使用,如处理阶乘问题等。
    下面介绍递归函数的应用。首先使用递归函数取得10!的值,其中10!=109!,而9!=98!,以此类推。使用js解决阶乘问题,可以使用f(n)表示n!的值,当1<n<10时,f(n)=n*f(n-1);当n<=1时,f(n)=1,程序代码如下:
<script type="text/javascript">
  function f(num){
       if(num<=1){
            return  1;
      }else {
          return  f(num-1)*num;
         }
      }
<script>

alert("10!的结果为: ""+f(10));            //3628800   
      
  1. 在定义递归函数时需要以下两个必要条件:
    (1)包括一个结束递归的条件
    例如:在上述代码中的if(num<=1)的语句,如果满足条件则执行return 1语句,不在递归。
    (2)包括一个递归调用的语句
    例如:在上述代码中的return f(num-1)*num语句,用于实现调用的递归函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值