【发布时间】:2018-07-11 03:10:09
【问题描述】:
在了解了一些对象构造函数后,我编写了一个小脚本,我想用这段代码更进一步,但 if statement 的行为与预期不符......我只想知道为什么?我知道这种脚本在 Javascript 中是不正常的......但我相信=== 正在评估为true,因此无论我输入什么,都会在警报框中打印dave,而不是遵循if statement 条件。
var dave, jason, nick, get;
get = prompt('Input your Name', 'Name Here')
var Person = function (name, birthYear, job) {
this.name = name;
this.birthYear = birthYear;
this.job = job;
};
dave = new Person('Dave', 1976, 'Showman');
jason = new Person('Jason', 1987, 'Novice');
nick = new Person('Nick', 1993, 'Cable-tech');
function printObj(object) {
var output = '';
for (var property in object) {
output += property + ': ' + object[property] + '\n';
}
alert(output);
}
if (get.toLowerCase === 'dave'.toLowerCase) {
printObj(dave);
} else if (get.toLowerCase === 'jason'.toLowerCase) {
printObj(jason);
} else if (get.toLowerCase === 'nick'.toLowerCase) {
printObj(nick);
} else {
alert('Not a defined object')
}
比较明显我可能做错了...但这就是在 javascript on freenode 中向我解释的方式,因为起初这是我的问题,这仍然是我想。我认为我只是在做一些明显混乱的事情,感谢我收到的任何见解,MDN 和 W3 只能解释这么多。
【问题讨论】:
-
.toLowerCase()不是函数方法吗?会不会有什么问题? -
@JoshuaTerrill 是的。实际上 === 两边是同一个函数,所以它们是相等的。
-
嗯,我最初的想法是使用 get === /dave/i 但这没有用。 ##javascript 中向我建议使用 toLowerCase。我仍然非常处于新手水平。这会导致它为任何响应输入打印 dave?
-
另外,如果
everything in lower case已经小写,你为什么还要'everything in lower case'.toLowerCase() -
当'get'是从提示中收到的,我试图解释大写名称被发送到'get',我发现它在较新的版本中被保留,目前已更改为yourName跨度>
标签: javascript object if-statement alert prompt