编程逻辑

The programming logic

提问人:Angus 提问时间:11/6/2023 更新时间:11/14/2023 访问量:126

问:

我正在学习面向初学者的在线 Javascript 课程。一个练习是关于Math.floor(的),给出的例子是:

get floorNum(x){
    let _x = x;
    _x = Math.floor(x);
    return _x;
}

我的问题是:为什么不直接将“return Math.floor(x)”放在函数体中?为什么让 _x = x,然后返回 _x?为什么不直接返回 x?底层逻辑是什么? 我想学习一些基本的编程逻辑。

我试过谷歌,但没有找到我想要的东西。我是一个绝对的初学者。

JavaScript 逻辑

评论

0赞 gog 11/6/2023
你是对的,这段代码根本没有意义。
0赞 freedomn-m 11/6/2023
你是对的,你通常不会使用 - 它似乎是你如何使用的派生示例 - 尽管如果你将该代码复制到浏览器中,它将不起作用,所以这似乎不是“纯”javascript,或者不完整,如这里提供的那样。什么是在线课程?floorNumget
1赞 freedomn-m 11/6/2023
let _x = x; x =在某些语言中,这可能是一种不好的做法,因为它需要不需要的作业。由于 javascript 是无类型的,这可能只是或通常会是 - 但他们可能试图灌输“最佳实践”,即与使用变量分开声明变量 - 然后未能正确地做到这一点。对于初学者来说,这是多么令人困惑。let _x;let _x = Math.floor...
0赞 VLAZ 11/6/2023
这是一门课程,我想它试图在展示“shorcuts”之前向您展示基础知识。我怀疑还有更多。您不应该在初学者课程中使用代码作为黄金标准。毕竟,它应该先教你编程,然后再告诉你如何改进。
1赞 VLAZ 11/6/2023
话虽如此,很奇怪。这是一个 getter,但 getter 不会收到任何参数。从本质上讲,永远是.get floorNum(x)xundefined

答:

1赞 Nmeer Naji 11/6/2023 #1

你是对的!,没有理由这样做 8n 这个例子。

你可以这样写

function floor(x) {
return Math.floor(x)
}

但请记住,这种技术在处理克隆的类、对象时很有用。

-4赞 Go_linski 11/6/2023 #2

试试这个:

_x = x => Math.floor(x);

评论

0赞 Community 11/7/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
-4赞 Tejesh Palagiri 11/6/2023 #3

实际上,在 js 中,我们可以声明一个以 _ 开头的变量。 根据我的直觉,他们可能只是用 _ 来表示地板这个词。 以这种方式编写或声明变量没有任何限制。

0赞 sdinushan 11/6/2023 #4

这也很好用。

get floorNum(x){return Math.floor(x);}

我认为他们是这样编码的,以便于理解。 他们使用下划线 ( _ ) 来表示变量名也可以以 ( _ ) 符号开头。在专业程序员中,使用此符号作为“私有(隐藏)”变量的别名。

评论

1赞 freedomn-m 11/6/2023
在 JS/C#(至少不是所有语言)中,约定意味着它是一个“私有变量”,只能在该方法/类中访问,不应该直接访问(例如,使用具有 getter/setter 的私有模块级变量)。_
0赞 Kelechi Daniels 11/7/2023
在 JS/C#(至少不是所有语言)中,_ 约定意味着它是一个“私有变量”,只能在该方法/类中访问,不应直接访问
1赞 Guerric P 11/6/2023 #5

让我们一步一步来做:

get floorNum(x){
    // Here you are duplicating the argument (supposing it's a number)
    let _x = x;
    // Here you are reassigning the previous variable, making the first line useless
    _x = Math.floor(x); 
    return _x;
}

由于第一行是无用的,因此您的代码可以重构为:

get floorNum(x){
    const _x = Math.floor(x); 
    return _x;
}

由于除了返回它之外,您没有做任何事情,因此可以再次将其重构为:_x

get floorNum(x){
    return Math.floor(x);
}