JavaScript 中 function 和 Function 除了能省略一个括号之外,还有什么区别? -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

JavaScript 中 function 和 Function 除了能省略一个括号之外,还有什么区别?

杨冬芳 2016-06-22 12:14:54 1533
var foo02 = new function()  
 {  
     var temp = 100;  
     this.temp = 200;  
     return temp + this.temp;  
 } 
var foo3 = new Function('var temp = 100; this.temp = 200; return temp + this.temp;');  
JavaScript 前端开发
分享到
取消 提交回答
全部回答(1)
  • 杨冬芳
    2019-07-17 19:45:24

    其实这:function(){}就是一个对象,给的例子Funciotn()也是作为
    /*下面这个函数其实就是Function的对象,它跟:
    var Function = new Function(); 是等价的,它又将作为window的属性存在着
    */
    它的一个对象存在着(你知道,JavaScript中对象也可以有自己的对象属性)。这样看他们都是一样-是一个对象。
    为什么很多地方都使用你说的那种形式来写JavaScript的代码呢?
    因为在JavaScript中代码的效率非常重要,一个函数对象在被执行完了之后,系统就会将它销毁,但是如果是一个全局属性的话,只有等到整个窗口被销毁的时候这些属性才会被销毁。像我上面那样的写法,Fucntion()函数在被执行完之后会被系统立马销毁掉,但是函数
    function (){
    //function content
    }
    还会作为一个全局的属性(前提是我们将它定义成全局)直到窗口销毁它才会被销毁,但是我们后面不会再调用它了。这样,如果有很有这样的属性或者是函数的话,会白白的浪费很多的系统资源。(function(){})();这种写法就很合理了,这个函数执行完之后立马就被销毁掉,节省了系统的开销。

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程