为什么这个函数在评估后没有返回变量?

时间:2015-09-16 17:57:05

标签: javascript

有人可以向我解释为什么a不是8.我知道代码运行后a = 7,但是如何让函数返回以使它为8? Java Script的新功能。

有人可以向我解释一下吗?

var a = 5;
function foo(a)
{
    a++;
}

a += 2;
console.log(a);

2 个答案:

答案 0 :(得分:2)

首先,您创建了一个函数,但是您没有调用它。它不会以你创建它的方式自动运行。

正如有人提到的,你有2个不同的' a'变量。一个存在于函数内部,一个存在于外部。认为它们是两个完全不同的东西。

var a = 5;
function foo(a)
{
    a++; //This adds just 1 to a. If you want to add more, you can do a = a + 2; or whatever
    return a; //Whenever you call this function, it will return a
}
a = foo(a);  //Take the current a (which is 5) pass it to foo(). Assign the resulting returned value to a. 
a += 2;  //add 2 to a. 
console.log(a);

该代码将产生a = 8.从5开始,加1,加2。

工作jsfiddle:http://jsfiddle.net/revg819p/1/

答案 1 :(得分:0)

您的函数foo(a)未执行。并且您的代码在语义上等于:

var a = 5;
a += 2;
console.log(a);

function foo(a) {
    a++;
}

此外,调用函数foo(a)不会改变全局变量a的状态