我有关于数组的问题。如果之前有人问过我,我会道歉,但我做了彻底的搜索,却找不到任何东西。
所以我试着编写一段简单的代码。想法是页面加载,出现一个提示框,询问名称,并继续,直到没有输入名称。
问题是,当我尝试在最后调用数组时,它只返回' true'而不是输入的实际名称。
我对数组很陌生,但我尝试了很多东西,而且我似乎无法获得返回的实际名称值。任何人都可以帮忙吗?
var enterNames = new Array();
var i;
while(i = prompt("Please enter a name", "") != "")
{
enterNames.push(i);
}
document.write(enterNames);
提前感谢任何可以解决的问题。
干杯, 千斤顶
答案 0 :(得分:1)
这是因为operator precedence:在while
条件下!=
被评估为第一个,产生一个布尔值,然后是{{1} }赋值恰好将该布尔值赋给=
。
您可以使用括号修复该问题,根据需要对事物进行分组:
i
在上下文中:
while((i = prompt("Please enter a name", "")) != "")

(请注意,在循环条件下执行赋值很多人都不赞成,但显然它确实有用。另请注意,var enterNames = [];
var i;
while((i = prompt("Please enter a name", "")) != "") {
enterNames.push(i);
}
document.write(enterNames);
通常[]
优于new Array()
来创建空数组,但要么有效。document.write()
几乎总是一个糟糕的计划。)
答案 1 :(得分:0)
var enterNames = []; //instead of new Array();
function _prompt(){
var i = prompt("Please enter a name", "");
if(i==""){
_prompt();
return;
}
enterNames.push(i);
}
_prompt();
console.log(enterNames);