たびたび、失礼します。今日も質問です。

var p = 1;
var q = AAA(p);
console.log(q); // 1002だ。ヘンです!

function AAA(x) {
x++;
BBB();
return x;

function BBB() {
// 関数BBBは引数・返却値 無いぜ
x = x + 1000;
}

}


というjavascriptなのですが
1002って表示されるんですよ。
ボクは、絶対に2と表示が正解にも関わらず、なのに
javascriptがバグってるんワケないから、
ボクの、頭が、バグってると思うのですが
どうしても、不意に落ちません。 教えて下さい�@

あと、
関数内関数BBBは、クロージャってヤツですか。 
教えて下さい�A

以上2点のご教示頂けると、ありがたいです。