Javascript,对象,函数和案例语句问题[关闭]
Posted
技术标签:
【中文标题】Javascript,对象,函数和案例语句问题[关闭]【英文标题】:Javascript, Objects, Functions and Case statement problems [closed] 【发布时间】:2017-01-18 02:46:46 【问题描述】:您好,我目前正在使用 www.codeacademy.com 网站在空闲时间学习 javascript。
一个例子要求我创建一个对象,然后调用一个函数从这些对象中搜索名称。哪个对象具有名称,则所有属性都应显示在屏幕上。我可以很容易地用 if else 语句来做到这一点。令我困惑的是我无法让它与案例陈述一起使用。它不是选择正确的案例,而是“总是”选择第一个案例。我的代码如下。它包括一些调试行,试图帮助我理解为什么它的行为不像我认为的那样:
var movie = ;
movie.toyStory2 =
name: "Toy Story 2",
review: "Great story. Mean prospector."
;
movie.findingNemo =
name: "Finding Nemo",
review: "Cool animation, and funny turtles."
;
movie.theLionKing =
name: "The Lion King",
review: "Great songs."
;
var list = function(obj)
for (var prop in obj)
console.log(1,prop);
;
var getReview = function (name)
for (var name in movie)
console.log(2, name); // debug line
console.log(3, movie); // debug line
switch (movie) // debug line i have used different switches to no avail
// movie prop name amongst others, though logically
// i think this should work
case "Toy Story 2":
console.log(4, movie[name].review); // debug line
return movie[name].review;
break;
case "Finding Nemo":
console.log(5, movie[name].review); // debug line
return movie[name].review;
break;
case "The Lion King":
console.log(666, movie[name].review); // debug line
return movie[name].review;
break;
default:
console.log(7, movie[name].review); // debug line
return ("I don't know!");
break;
;
list(movie);
//getReview("Toy Story 2"); // debug line
//getReview("Finding Nemo"); // debug line
getReview("The Lion King");
对象是我编程中最难理解的部分,任何帮助将不胜感激,请轻点:D
我没想到会立即得到答复,感谢您的建议。我已经把它带到船上并清理了我的帖子。道歉
【问题讨论】:
"THE CODE WOULD HAVE BEEN HERE, RATHER THAN SPENDING TIME FORMATTING IT FOR FORUM VIEW I'VE ATTACHED A JPEG OF IT FOR EASIER READABILITY."
-- 如果我们想自己运行 -- 我们必须自己输入?
翻译:是的,花时间让人们可以轻松地帮助你。
人们还在把 JavaScript 误认为是 Java?
请浏览tour、help center 和how to ask a good question 部分,了解本网站的工作原理并帮助您改进当前和未来的问题,从而获得更好的答案.
这甚至不是Java,拜托
【参考方案1】:
switch
语句不会查找名称与name
参数匹配的对象。它只是遍历每个case
语句,直到找到与for
循环中的当前属性名称匹配的语句。由于对象中的第一个属性具有name = "Toy Story 2"
,因此第一个case
语句匹配。所以它会执行console.log()
语句,然后从函数中返回。
没有理由为此使用switch
语句。应该是:
for (var prop in movie)
if (movie[prop].name == name)
console.log(5, movie[prop].name);
return movie[prop].review;
【讨论】:
谢谢Barmar,我用过。该教程坚持我使用了 switch 语句。最后我通过简单地删除 for 循环来解决它。尽管即使在那时本教程也会接受它是正确的。感谢您的帮助。以上是关于Javascript,对象,函数和案例语句问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript高级函数相关知识:函数纯函数柯里化严格模式
JavaScript高级函数相关知识:函数纯函数柯里化严格模式