为什么我的JS代码不起作用?

时间:2014-09-28 22:01:08

标签: javascript

我正在尝试的只是通过立即调用函数在控制台中打印消息。这是一个例子:

function (a){
    return function (a){
        console.log('msg' + a);
    }
}(3);

PS

请不要过快评判我,我只是开始学习JavaScript。

3 个答案:

答案 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