美文网首页
函数声明与表达式

函数声明与表达式

作者: _Yfling | 来源:发表于2017-03-07 11:50 被阅读0次

创建函数的方式:函数声明函数表达式、还有一种不常见的方式就是Function构造器

函数声明:

function add(a,b) {
    a = +a;
    b = +b;
    if (isNaN(a) || isNaN(b)) {
        return;
    }
    return a + b;
}

函数表达式的几种方式:

// 函数表达式
var add = function(a, b) {
    // do sth
}


// 匿名函数定义的一个立即执行函数表达式
(function() {
    // do sth
})();


// 作为返回值的函数表达式
return function() {
    // do sth
};


// 命名式函数表达式
var add = function foo (a, b) {
    // do sth
}

函数声明与函数表达式的主要区别就是:函数声明会被前置
函数声明前置:

// function add(a,b) 已经声明前置了,可以正常调用
var num = add(1, 2);
console.log(num);  // 3

function add(a,b) {
    a = +a;
    b = +b;
    if (isNaN(a) || isNaN(b)) {
        return;
    }
    return a + b;
}

函数表达式前置:

// var add 变量声明提前,此时变量的值是undefined
var num = add(1, 2);
console.log(num);  // TypeError:undefined is not a function

var add = function(a, b) {
    a = +a;
    b = +b;
    if (isNaN(a) || isNaN(b)) {
        return;
    }
    return a + b;
}

Function构造器:

var func = new Function('a', 'b', 'console.log(a+b);');
fun(1, 2); // 3

// 和上面的方式没有区别
var func = Function('a', 'b', 'console.log(a+b);');
func(1, 2); // 3

区别:


360截图20170307114742162.png

相关文章

  • JS函数基础(一)

    函数声明与函数表达式、声明的提前、arguments、“重载”、立即执行函数表达式 1. 函数声明和函数表达式有什...

  • 16. 函数与作用域

    函数声明和函数表达式的区别 函数声明 声明不必放在调用的前面 函数表达式 声明必须放到调用的前面 变量与函数的声明...

  • 函数与作用域链

    1.函数声明与函数表达式有什么区别 函数声明: function myFunction(){}函数表达式:var ...

  • 函数

    函数声明和函数表达式有什么区别 函数声明 函数表达式 函数声明和函数表达式的区别: 函数声明必须给定函数名称,函数...

  • 函数与作用域

    函数声明与函数表达式的区别 变量的声明前置与函数的声明前置 arguments 通过以下语句可将arguments...

  • 函数与作用域

    函数声明与函数表达式 参考 ECMA 标准规范 函数声明 function a(){ return 1; ...

  • web前端-js小记(3)-函数及作用域

    1. 函数声明和函数表达式有什么区别 函数声明 函数表达式 区别:函数声明不用把声明放到函数调用的前面,函数表达式...

  • JavaScript中的函数与闭包

    查阅书籍:JavaScript权威指南 函数声明与函数表达式 用函数声明定义的函数,函数可以在函数声明之前调用,而...

  • 函数声明的几种方式

    函数声明的几种方式 三种 : 函数声明(1),函数表达式(2~5),Function构造器(6) 函数声明与函数表...

  • 函数与作用域

    函数声明和函数表达式有什么区别 函数声明 函数表达式 区别 函数表达式结束后需要加;表示声明变量结束。 函数表达式...

网友评论

      本文标题:函数声明与表达式

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