Function的声明

最近在选择模版引擎,想起看看underscore里的模板引擎的实现
发现这部分只用了很少的代码来实现,读起来还比较晦涩,虽然进入前端首先就是看的这个源码
但是当时只是看了大概实现方式,其中很多语法不是太明白
这其中用到了通过字符串构建函数体的方法

函数声明的方法

  • 1

    1
    function test(a){console.log(a)};
  • 2

    1
    var test = function(a){console.log(a)};
  • 3 使用Function构造

    1
    var test = new Function('a','console.log(a)');

    Function的最后一个参数为函数体,前面的所有参数均作为test的参数;
    与1和2中定义相同;
    underscore中该部分代码片段:

    1
    2
    3
    4
    5
    6
    7
    8
    ...
    try {
    var render = new Function(settings.variable || 'obj', '_', source);
    } catch (e) {
    e.source = source;
    throw e;
    }
    ...
  • 4 匿名函数
    匿名函数的使用类似2中,将函数赋值给变量。
    只是此处直接执行匿名函数;

    1
    (function(a){console.log(a)})(111);

本文地址: http://gehaiqing.com/2016/08/01/js-function/