我正在尝试的只是通过立即调用函数在控制台中打印消息。这是一个例子:
function (a){
return function (a){
console.log('msg' + a);
}
}(3);
PS 的
请不要过快评判我,我只是开始学习JavaScript。
答案 0 :(得分:6)
用括号括起来使代码有效的javascript语法。我想你想声明一些匿名函数。以下是如何做到的:
(function() {
return function(a) {
console.log('msg' + a);
}
})()(3);
或者你的意思是:
(function someFunc(a) {
console.log('msg' + a);
})(3);
在第一种情况下,您的匿名范围会返回一个函数,因此您需要先将其调用,然后再将任何参数传递给它。
在第二种情况下,它只是通过直接传递参数来立即声明和执行的匿名函数。
答案 1 :(得分:1)
这可能有效:
(function(a) {
return function(a) {
console.log('msg' + a);
}
})(3)(5);
它说msg5
,你找出原因;)
答案 2 :(得分:1)
如果你调用自调用anonnymous函数,你需要封装它:
(function (a){
return function (a){
console.log('msg' + a);
}
}(3));
然后,当你有一个闭包时,该值不会传递给返回的函数,所以试试这个,你会看到:
(function (a){
return function (a){
console.log('msg' + a);
}
}(3)(7));
这是用简单的词语写成的(3)(7)的一个例子:
var f1 = function (a){
console.log(a);
return function (a){
console.log('msg' + a);
}
}
var inheritFunction = f1(3); // Calling f1(3) won't return what you are looking for.
inheritFunction(7); // Returns the original value