深入浅析JS Function()构造函数

前端之家收集整理的这篇文章主要介绍了深入浅析JS Function()构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

js中function对象是一个令人着迷的东西,但由于他太过于灵活,常常令人迷惑.

先给大家看个代码片段。

   看到这两个你的第一感觉是什么?都返回 "local"??,如果是这样的话就需要好好看一下下面的讲解了。constructFunction2()了解闭包的就应该很容易的知道答案 是"local",这里就不细讲了。下面我着重讲一下constructFunction()的情况。

  这里用到了 Function()构造函数,Function()构造函数虽然不是很常用,但是了解一下还是很有必要的。

  不管是通过函数定义语句还是函数直接量表达式,函数的定义都要使用 function()关键字。单函数还可以通过Function()构造函数来定义,比如:

  这一行的实际效果和下面的一行代码是等价的。

   Function()构造函数可以传入任意数量的字符串实参,最后一个实参所表示的文本是函数体;它可以包含任意的Javascript 语句,每条语句之间用分号分割。传入构造函数的其他所有的实参字符串是指定函数的名字的字符串。如果定义的函数不包含任何参数,只需给构造函数简单地传入 一个字符串函数体即可。

  关于Function()构造函数需要特别注意一下几点:

  1.Function()构造函数允许JavaScript在运行时动态的创建并编译函数

  2.每次调用Function()构造函数都会解析函数体,并创建新的函数对象。如果是在一个循环或者多次调用函数中执行这个构造函数,执行效率会受到影响。相比之下,循环中的嵌套函数函数定义表达式则不会每次执行时都重新编译。

  2.最后的一点,也是关于Function()构造函数非常重要的一点,就是它所创建的函数并不使用词法作用域,相反,函数代码的编译总是会在顶层函数执行。看完这一点,上面的函数constructFunction()();返回“global”应该很容易理解了吧?

以上所述是小编给大家介绍的JS Function()构造函数。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

猜你在找的JavaScript相关文章