javascript的闭包、JavaScript Function对象创建函数对象(new Function())将字符串当作代码来执行

复杂的闭包实例

在一个函数中定义另一个会使闭包变得更加复杂。例如:

var iBaseNum = 10;

function addNum(iNum1, iNum2) {
  function doAdd() {
    return iNum1 + iNum2 + iBaseNum;
  }
  return doAdd();
}

这里,函数 addNum() 包括函数 doAdd() (闭包)。内部函数是一个闭包,因为它将获取外部函数的参数 iNum1 和 iNum2 以及全局变量 iBaseNum 的值。 addNum() 的最后一步调用了 doAdd(),把两个参数和全局变量相加,并返回它们的和。

这里要掌握的重要概念是,doAdd() 函数根本不接受参数,它使用的值是从执行环境中获取的。

可以看到,闭包是 ECMAScript 中非常强大多用的一部分,可用于执行复杂的计算。

JavaScript Function对象

//        var func = new Function("console.log('我是动态创建的函数');console.log(1);");  
//        func();    // 会把Function() 中最后一个参数当做函数体执行。
        // 类似 eval()函数,可以将字符串当做代码(函数体)来执行。
 
 
        //Function这个构造函数 可以用来创建函数对象
        //语法:
        //0.一个参数都不传的情况  创建的就是一个空的函数
        //var 函数名 = new Function()
        //1.只传一个参数的情况 这个参数就是函数体
        //var 函数名 = new Function("函数体")
        //2.传多个参数的情况,最后一个参数为函数体,前面的参数都是该函数的形参名
 
        //练习:使用Function创建一个打印4句歌词的函数
//        var func = new Function("console.log('4句歌词');");
//        func();

猜你喜欢

转载自blog.csdn.net/memedadexixaofeifei/article/details/87432179