开发者社区> 问答> 正文

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

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;');  

展开
收起
杨冬芳 2016-06-22 12:14:54 3174 0
1 条回答
写回答
取消 提交回答
  • IT从业

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

    2019-07-17 19:45:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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