javascript中的函数到底是什么东西?

function Foo(){

}

Foo.prototype.a = 1

var f1 = new Foo
var f2 = new Foo()

console.log(f1.a,f2.a)

如上面的代码,new Foo的时候为什么可以加括号也可以不加括号?

阅读 2.7k
4 个回答

先说一下new Foo 什么时候加括号和不加括号是等同的吧:

没有参数的时候

至于我所知道的出处是《JavaScript权威指南》

clipboard.png

JavaScript里面有一些问题就像是妖精一样,你只是听大牛说有这

么个东西,但是完全不知道是从哪里来的,┑( ̄Д  ̄)┍ 。

var f1 还可以不写var呢,我觉得是编写代码的人为了照顾一些人的习惯多增加了一种写法

函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。

楼上所说的正解,不过,一般为了严谨代码结构,或者给后面维护代码的人一种直观的感觉,最好都按大多数人的写法就写吧,不要一位的追求自己的代码只有自己看的懂的就是大神,这个事错误的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题