为什么此函数不符合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);