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,对象,函数和案例语句问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

头歌实验四Python分支结构

头歌实验四Python分支结构

JavaScript高级函数相关知识:函数纯函数柯里化严格模式

JavaScript高级函数相关知识:函数纯函数柯里化严格模式

JavaScript上部分--头歌(educoder)实训作业题目及答案

区块链-前端交互第三篇:JS 基础语句和函数对象和类class