功能是:
(function (x,y) {return x+y})('foo')
我正在学习javascript。
我不知道这句话是什么意思。这似乎是一种功能。但是,当我用它作为
时foo(1,2)
它会出错。 谁能告诉我这句话的意思?它是一个函数还是一个错误的陈述?如果它是一个功能,我该如何使用它?或者它是
facebook API的演示中有类似的功能,即
(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'));
我不明白这段代码。它是一个以document, 'script', 'facebook-jssdk'
为输入的函数吗?如果是,函数名称是什么?
谢谢!
答案 0 :(得分:3)
你有一个匿名函数,它接受两个参数,x
和y
。它正在返回这两者的组合。使用'foo'作为字符串调用该函数,结果返回'fooundefined'
。
由于没有任何东西可以存储这个任务,并且y未被使用,采用这种方法似乎有点无意义。通常,立即调用的函数表达式会产生副作用或将构造的对象返回给变量。
(function(x,y){
document.getElementById(x).innerHTML = y;
})('foo',5)
或
var add = (function(x,y){return x+y})(1,2);
修改的
为了响应您的编辑,如果您要命名一个函数,它需要在参数之前,并且它需要在表达式范围之外可用。因此,要定义foo,您将使用
function foo(x,y){
return x+y;
}
然后你可以使用它
var add = foo(1,2);