美文网首页前端基础笔记
【javascript】函数表达式&递归

【javascript】函数表达式&递归

作者: shanruopeng | 来源:发表于2017-11-20 10:49 被阅读2次
  • 定义函数的方式有两种:一是函数声明,另一种是函数表达式。

1、函数声明语法

function functionName(arg0, arg1, arg2) {
    //函数体
}
//只在Firefox、Safari、Chrome 和Opera 有效
alert(functionName.name); //"functionName"
  • 函数声明有一个重要特征是函数声明提升,在执行代码之前会先读取函数声明。
sayHi();
function sayHi(){
    alert("Hi!");
}
//这个例子不会抛出错误,因为在代码执行之前会先读取函数声明。

2、函数表达式语法形式

var functionName = function(arg0, arg1, arg2){
    //函数体
};
//函数表达式有几种不同的语法形式。这是最常见的一种形式。在使用前必须先赋值。
sayHi(); //错误:函数还不存在
var sayHi = function(){
    alert("Hi!");
};
  • 这种形式创建一个函数并将它赋值给变量functionName。这种情况下创建的函数叫做匿名函数拉姆达函数

理解函数声明和函数表达式的区别

//不要这样做!
if(condition){
    function sayHi(){
        alert("Hi!");
    }
} else {
    function sayHi(){
        alert("Yo!");
    }
}
//在js中属于无效语法,javascript引擎会尝试修正错误,但各浏览器的修正机制不一致。
  • 使用函数表达式
//可以这样做
var sayHi;
if(condition){
    sayHi = function(){
        alert("Hi!");
    };
} else {
    sayHi = function(){
        alert("Yo!");
    };
}
//不同的函数会根据condition 被赋值给sayHi。
  • 能够创建函数再赋值给变量,也就能够把函数作为其他函数的值返回.
function createComparisonFunction(propertyName) {
    return function(object1, object2){
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        if (value1 < value2){
            return -1;
        } else if (value1 > value2){
            return 1;
        } else {
            return 0;
        }
    };
}

递归

  • 递归函数是在一个函数通过名字调用自身的情况下构成的
function factorial(num){
    if (num <= 1){
        return 1;
    } else {
        return num * factorial(num-1);
    }
}
var anotherFactorial = factorial;
factorial = null;
alert(anotherFactorial(4)); //出错!
  • 为解决耦合问题,可以使用arguments.callee
function factorial(num){
    if (num <=1) {
        return 1;
    } else {
        return num * arguments.callee(num-1)
    }
}
//但在严格模式下,不能通过脚本访问arguments.callee,访问这个属性会导致错误。
  • 可以使用命名函数表达式来实现此递归函数
var factorial = (function(num){
    if(num<=1){
        return 1;
    }else{
        return num*(num-1);
    }
})
//这种方式在严格模式和非严格模式下都行得通。
好好学习

相关文章

  • JavaScript函数表达式——“函数的递归和闭包”的注意要点

    JavaScript函数表达式——“函数的递归和闭包”的注意要点 函数表达式的基本概念 name属性和函数提升 首...

  • JS函数的递归和闭包的注意要点

    JavaScript函数表达式——“函数的递归和闭包”的注意要点 函数表达式的基本概念 name属性和函数提升 首...

  • 【javascript】函数表达式&递归

    定义函数的方式有两种:一是函数声明,另一种是函数表达式。 1、函数声明语法 函数声明有一个重要特征是函数声明提升,...

  • 前端算法学习-前篇

    递归 JavaScript中允许函数递归调用,示例: 当一个函数呗递归调用时,递归没有完成,函数的计算结果会被暂时...

  • JavaScript递归函数

    JavaScript 支持函数的递归调用。 所谓递归函数,就是在函数体内调用函数本身。 使用递归函数的一个常见例子...

  • JavaScript函数表达式——递归

    递归 递归函数是在一个函数通过名字调用自身的情况下构成的。 使用arguments.callee是一个执行正在执行...

  • 函数表达式

    本文主要介绍,函数表达式特征、使用函数实现递归、使用闭包定义私有变量。 函数表达式特征 函数表达式是JavaScr...

  • (十)

    函数表达式定义函数的方式有两种:一种是函数声明,另一种就是函数表达式。递归递归函数是在一个函数通过名字调用自身的情...

  • AE表达式--抖动

    表达式:wiggle(freq, amp, octaves = 1, amp_mult = .5, t = tim...

  • Javascript 递归函数

    当一个函数在执行时调用了自身,那么这个函数就是递归函数。递归函数经常用来解决一些循环反复的问题。我们首先列举一些递...

网友评论

    本文标题:【javascript】函数表达式&递归

    本文链接:https://www.haomeiwen.com/subject/wjamvxtx.html