我這裏有一些代碼Javascript問題。變量設置功能內,但功能外它不是
var F;
var favv= ['E','I','A','O','U'];
var i = 0;
function vowelcount(arg, favv)
{
for(i=0;i<favv.length;i++) {
c = 0;
V = favv[i];
for (j=0;j<arg.length;j++) {
if (arg[j].toUpperCase()===V) {
c++;
};
}
if (c>0) {
F=V;
return c;
}
}
}
var person1 = {name:"Super",spd:20};
var person2 = {name:"Supeer",spd:20};
function Scheck(person1, person2) {
if (person2.spd>person1.spd) {
var sub=person1;
person1=person2;
person2=sub;
} else if (person2.spd===person1.spd) {
var ct1 = vowelcount(person1.name, favv);
var ct2 = vowelcount(person2.name,F);
if (ct2 > ct1) {
var subp = person1;
person1= person2;
person2=subp;
}
}
console.log(person1);
console.log(person2);
}
Scheck(person1,person2);
console.log(person1);
console.log(person2);
這裏我有元音,兩個人的屬性名稱和社民黨組成的數組。當我運行Scheck時,我想使用vowelcount來確定人們在速度統計相等的情況下會移動的順序。如果您查看函數內的console.logs,它們會輸出正確的名稱......但是在函數後面,console.logs將顯示原始順序。爲什麼是這樣?
JavaScript是按值傳遞的語言。 – Pointy
因爲引用。 –
可能的重複:http://stackoverflow.com/questions/500431/javascript-variable-scope – ernie