【问题标题】:Can't make sense of Exercism.io无法理解 Exercism.io
【发布时间】:2020-03-30 06:15:25
【问题描述】:

我刚开始学习 Javascript,我认为一边看视频一边编码是掌握一门语言的最佳方式。 我在 Javascript 中学习了以下主题(简要): - 基本 JS 运算符 - JS 数组 - JS对象 - if-else 条件和循环

在学习了这些之后,我进入了 Exercism.io,因为我在一些 reddit cmets 中看到,exercism.io 是初学者练习 javascript 的好地方。但我无法理解 Exercism 中简单的“Hello World”程序。我的意思是,您只需在(大多数)“Hello world”程序中编写console.log(“Hello World”),因为它是一个非常非常基本的程序,对吧?如果是,那么这些到底是什么:

export const hello = () => {
  throw new Error("Remove this statement and implement this function");
};

还有这个:

import { hello } from './hello-world';

describe('Hello World', () => {
  test('Say Hi!', () => {
    expect(hello()).toEqual('Hello, World!');
  });
});

什么是“=>”或“export”或“import...from”? Youtube 上有关于如何设置 Exercism 和解决“Hello World”程序的教程,但都没有解释这些复杂的主题。

那么,谁能就我现在必须学习的主题给我明确的指示,以便能够理解这些代码?蒂亚!

【问题讨论】:

    标签: javascript


    【解决方案1】:

    它主要是样板文件。如果方向很明确,您只需要弄清楚在hello 功能块的主体中​​放入什么内容以产生所需的输出 - 例如,对于本练习,您需要

    export const hello = () => {
      return 'Hello, World';
    };
    

    对于任何练习,您都应遵循相同的模式 - 找出您应该输入的函数,然后输入。

    => 是箭头函数语法。你不必担心,没关系 - 你可以做同样的事情

    export function hello() {
      return 'Hello, World';
    };
    

    您也不应该关心导入/导出。它们是环境将您编写的函数连接到测试以查看该函数是否产生正确输出的一种方式 - 它内置于练习中,它不是您需要(或应该)以任何方式弄乱的东西。只需在上层函数中编写您需要的内容并运行测试即可。

    阅读下面的测试将帮助您了解每个输入的预期输出类型 - 例如

    expect(hello()).toEqual('Hello, World!')
    

    基本上是说hello() === 'Hello, World!' 应该是true

    【讨论】:

    • 你的解释真的很好@CertainPerformance。你有两个问题:1)“只需在上层函数中写下你需要的东西并运行测试” - 你所说的“上层函数”是什么意思? 2)你看到了代码:export const hello = () => { throw new Error("Remove this statement and implement this function"); };而且您立即知道要省略“扔新”。当您将“Throw new”替换为 return 时,您使用的思维过程/知识是什么? “扔新”是什么意思?
    • 通过“上层函数”,我指的是上层代码块中的函数-以export const hello = () => {开头的代码块。该函数默认为throw new Error("Remove this statement and implement this function");,下面的测试调用hello() 并检查其返回值,因此很明显throw new Error 行应该被删除并替换为您自己的实现。
    • 如果他们改用// Implement the function here 会更清楚,throw new Error() 很奇怪
    • 我同意你的观点,对于像我这样的初学者来说有点奇怪。你用过exercism.io吗?我想通过解决问题来学习 JS,所以你认为 Exercism 是实现这个目的的好地方吗?它是一个初学者友好的平台吗?我的意思是,我在第一个问题中遇到了一些麻烦,但是既然你帮助我理解了不要担心这些“奇怪的部分”,我能不能从现在开始找到“正确的功能”,把代码放进去,希望解决问题?或者在我开始解决锻炼中的“简单”问题之前,我需要学习更多概念吗?
    • 我从没去过那里,但我熟悉类似的网站,其中有很多。一旦你了解了如何解决一个练习,其余的可能就没有任何类似的陷阱需要注意了——剩下的应该只是编程。
    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 2014-01-03
    • 2020-04-17
    • 2017-10-05
    • 2020-08-26
    • 2011-04-12
    • 2020-02-26
    相关资源
    最近更新 更多