开发者社区> 问答> 正文

javascript中的一个函数求分析

(function(){
    var test = 'Hello world';
})();

上面函数有什么作用,什么时候该这样做?谢谢!上面函数是闭包吗?

展开
收起
a123456678 2016-07-15 09:37:08 2056 0
2 条回答
写回答
取消 提交回答
  • 1、在js中,()本身是有执行一段表达式(对象、函数)的功能的,返回表达式或者表达式结果。譬如 (1)、(function(){return 1;})、(1+2)。

    2、function(){} 这叫做匿名函数。

    所以
    (function(){

    var test = 'Hello world';

    }) 会返回一个function,因为js一切皆对象,我们不妨

    var a = (function(){

    var test = 'Hello world';

    }); , a这是一个函数

    a(),也就是
    (function(){

    var test = 'Hello world';

    })(); 是函数调用,会执行 var test = 'Hello world';

    3、理解闭包,要先理解作用域、理解函数定义。函数定义时,会创建一个context的东西,把函数用到的,包括并不是函数内定义的变量,绑定到自身,这样就创建了一个闭包。单纯说某个函数是不是闭包,没有什么意义,因为闭包是语言层面的东西,应该说js函数支持闭包。

    用a123456678的例子:
    (function() {
    var test = 'Hello world'; // 定义,外层函数作用域,有自己的context
    return (function() {

    return test; // 引用,内层函数作用域,有自己的context

    });
    })()();

    2019-07-17 19:56:42
    赞同 展开评论 打赏
  • (function() {
      var test = 'Hello world';
      return (function() {
        return test;
      });
    })()();

    test作用域出了上面的函数就消亡了,所以约束了,也有类似“名字空间”的约束。
    有闭包的话,生命周期就延长到了构成闭包的函数的生命周期。

    2019-07-17 19:56:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载