Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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';s质量_Javascript - Fatal编程技术网

为什么此函数不符合javascript';s质量

为什么此函数不符合javascript';s质量,javascript,Javascript,功能是: (function (x,y) {return x+y})('foo') 我正在学习javascript 我不知道这句话是什么意思。这似乎是一个函数。然而,当我把它用作 foo(1,2) 它给出了错误。 谁能告诉我那句话是什么意思吗?它是一个函数还是一个错误的语句?如果它是一个函数,我如何使用它?或者是 FacebookAPI的一个演示中有一个类似的函数,它是 (function(d, s, id){ var js, fjs = d.getElementsByTagN

功能是:

(function (x,y) {return x+y})('foo')
我正在学习javascript

我不知道这句话是什么意思。这似乎是一个函数。然而,当我把它用作

foo(1,2)
它给出了错误。 谁能告诉我那句话是什么意思吗?它是一个函数还是一个错误的语句?如果它是一个函数,我如何使用它?或者是

FacebookAPI的一个演示中有一个类似的函数,它是

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
我不懂这个密码。它是以
文档、'script'、'facebook jssdk'
作为输入的函数吗?如果是,函数名是什么?
谢谢

这里有一个匿名函数,它接受两个参数,
x
y
。它正在返回这两者的组合。正在使用“foo”作为字符串调用该函数,因此返回值为
'fooundefined'

由于没有存储该赋值,并且y未使用,因此采用这种方法似乎有点毫无意义。通常,立即调用的函数表达式会产生副作用,或将构造的对象返回给变量

(function(x,y){
  document.getElementById(x).innerHTML = y;
})('foo',5)

编辑

作为对编辑的响应,如果要命名函数,它需要位于参数之前,并且需要在表达式范围之外可用。所以要定义foo,您将使用

function foo(x,y){
 return x+y;
}
然后你就可以用它了

var add = foo(1,2);

问题到底是什么?它完全按照预期工作-“不符合javascript的质量”是什么意思?是的,“javascript的质量”是什么?有人有javascript警察的电话号码吗?在这里:
(函数(x,y){return x+y})('foo')
,我可以说
(函数(x,y){return x+y})
是函数体,而
foo
是函数名?这不正确
'foo'
是传递给匿名函数的参数,参数为x和y。因为只传递foo,所以x接收foo,y变得未定义。这个函数没有名字,而且是匿名的。我们不能重复使用匿名函数,对吗?那它为什么会被创造出来呢?为什么不直接使用语句而不是创建匿名函数?谢谢。如果匿名函数未存储在变量中,则无法重复使用(除非它嵌套在另一个函数中,在这种情况下,在求值时将执行它)。使用匿名函数的原因是为了避免使用全局命名空间。一旦变量在函数中,它们的作用域就是该函数。这意味着它们不会干扰,也不会被页面上共享相同范围和名称的其他变量干扰。最好避免污染全局名称空间。你可以在这里看到更多:非常清楚。谢谢
var add = foo(1,2);