Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是";fn()”一词;区别对待;fn();调用函数的时候?_Javascript - Fatal编程技术网

Javascript 是";fn()”一词;区别对待;fn();调用函数的时候?

Javascript 是";fn()”一词;区别对待;fn();调用函数的时候?,javascript,Javascript,当涉及到调用时会有,但是当使用括号调用时,它们实际上会得到不同的处理吗 除了人类读者之外,fn()与fn()有什么不同吗 此外,在(fn()和fn()之间是否存在差异,如果是,那么fn()与这两者中的哪一个相似 对于这个问题,fn可以是任何函数function fn(){}或var fn=function(){} 编辑:这个问题不是“它们会有相同的结果吗?”,而是关于JavaScript编译器是否/如何处理它们。否,fn(),fn(),(fn)()和(fn)()都意味着相同的事情。否,fn(

当涉及到调用时会有,但是当使用括号调用时,它们实际上会得到不同的处理吗

除了人类读者之外,
fn()
fn()
有什么不同吗

此外,在
(fn()
fn()
之间是否存在差异,如果是,那么
fn()
与这两者中的哪一个相似


对于这个问题,
fn
可以是任何函数
function fn(){}
var fn=function(){}



编辑:这个问题不是“它们会有相同的结果吗?”,而是关于JavaScript编译器是否/如何处理它们。

否,
fn()
fn()
(fn)(
)和
(fn)(
)都意味着相同的事情。

否,
fn()
fn()
(fn)(
(fn)(
)所有的意思都是一样的。

没有区别,
fn()=fn()=(fn)(
但是
函数fn(){}=var fn=function(){}
因为它是如何工作的。

没有区别,
fn()=fn()=(fn)(
但是
function fn(){}=var fn=function(){}
因为它们是如何工作的。

你真的在解释器中尝试过这些吗?@millimoose它们都能工作,这不是我要问的。那么,它们的工作方式有什么不同吗?(另一个提示是“约定”一词。@millimoose
fn()
(1,fn)(
),但工作原理相同。这与您所询问的情况相反。为什么这意味着什么?几乎有无限多的表达式可以产生任何给定的值。但在你的问题中,你的例子之间的句法差异对于任何其他表达式来说都没有语义含义,事实上,在计算时似乎没有什么区别。你所问的无异于问
1+1
1+1
(1)+(1)
之间的区别。你真的在翻译中试过这些吗?@millimoose它们都能工作,这不是我要问的。好吧,它们的工作方式有什么不同吗?(另一个提示是“约定”一词。@millimoose
fn()
(1,fn)(
),但工作原理相同。这与您所询问的情况相反。为什么这意味着什么?几乎有无限多的表达式可以产生任何给定的值。但在你的问题中,你的例子之间的句法差异对于任何其他表达式来说都没有语义含义,事实上,在计算时似乎没有什么区别。你所问的无异于问关于
1+1
1+1
(1)+(1)
@alex23之间的区别:尽管如此,还是有很大的区别。当您执行
function foo(){}
时,事实是
foo
甚至在声明函数之前就可用,因为提升(而不是作用域)是如何工作的。如果使用
var foo=function()。函数声明意味着它附加到全局范围的假设是错误的;它附在最近的作用域(函数)的最顶端。@alex23:在某些方面我可能同意你的观点,但我认为你错了。我知道在JS中,每个对象(或对象实例)都有一个原型,可以扩展也可以不扩展,但它不会改变变量作用域的行为……使用arguments.callee是不好的做法,如果您在现代浏览器上使用命名函数表达式,它可以通过名称引用自身。这甚至在严格的法律中是不允许的iirc@alex23当前位置尽管有很大的不同。当您执行
function foo(){}
时,事实是
foo
甚至在声明函数之前就可用,因为提升(而不是作用域)是如何工作的。如果使用
var foo=function()。函数声明意味着它附加到全局范围的假设是错误的;它附在最近的作用域(函数)的最顶端。@alex23:在某些方面我可能同意你的观点,但我认为你错了。我知道在JS中,每个对象(或对象实例)都有一个原型,可以扩展也可以不扩展,但它不会改变变量作用域的行为……使用arguments.callee是不好的做法,如果您在现代浏览器上使用命名函数表达式,它可以通过名称引用自身。这在严格意义上是不允许的。你能给我举个例子说明它们的不同之处吗?你能给我举个例子说明它们的不同之处吗?