我想要的只是通过立即调用函数在控制台中打印消息。这里是例子:为什么我的JS代码不起作用?
function (a){
return function (a){
console.log('msg' + a);
}
}(3);
PS
请不要评判我的太快,我才开始学习的JavaScript。
我想要的只是通过立即调用函数在控制台中打印消息。这里是例子:为什么我的JS代码不起作用?
function (a){
return function (a){
console.log('msg' + a);
}
}(3);
PS
请不要评判我的太快,我才开始学习的JavaScript。
如果你调用一个自调用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
用圆括号括起来,使您的代码有效的JavaScript语法。我想你想声明一些匿名函数。这里是如何做到这一点:
(function() {
return function(a) {
console.log('msg' + a);
}
})()(3);
或者你的意思是:
(function someFunc(a) {
console.log('msg' + a);
})(3);
在您的匿名范围返回函数第一种情况,所以你需要传递任何参数之前先调用它。
在第二种情况下,它只是通过直接传递参数来立即声明和执行的匿名函数。
第一个例子。 – barbara 2014-09-28 22:04:26
我将停止修复您的帖子,现在(刚刚投票给您);;) – 2014-09-28 22:05:38
这可能会实现:
(function(a) {
return function(a) {
console.log('msg' + a);
}
})(3)(5);
它说msg5
,你找出原因;)
非常有趣的例子。但我不明白他们之间的区别。我的意思是这个差异在'}(3));'和'}(3)(7));' – barbara 2014-09-28 22:18:08
哦,我现在看到了。谢谢你的解释。 – barbara 2014-09-29 11:20:32
很高兴帮助。你从Codeschool学习吗? – Rod 2014-09-29 19:30:56