我应该将变量放在 if 条件中吗?
Should I put variables inside an if conditional?
我想知道,根据良好做法,在这种情况下放置变量最方便的方法是什么:
如果你有一个函数,只有当条件语句为真时它的内容才会被执行,你会将变量放在哪里?
addMessage (text) {
let lastMessage = React.findDOMNode(this.refs.messages);
if (text.length) {
ChatActions.addMessage(text);
lastMessage.scrollTop = lastMessage.scrollHeight;
}
}
或者像这样:
addMessage (text) {
if (text.length) {
let lastMessage = React.findDOMNode(this.refs.messages);
ChatActions.addMessage(text);
lastMessage.scrollTop = lastMessage.scrollHeight;
}
}
如果不在if
语句外使用,则在if
语句内。
放在if语句中。特别是如果变量赋值成本很高,因为除非满足 if 语句,否则永远不会使用它。
在 if 语句中。根据您的代码,只有 IF 语句需要 lastMessage 函数 - 因此您应该将其括起来。否则,每次 运行 您的 if 检查都在执行计算,无论您是否需要它。那会很浪费。
是的,绝对
如许多 JavaScript 风格指南所述:
Airbnb JavaScript Style Guide() {
13.4 Assign variables where you need them, but place them in a reasonable place.
Why? let and const are block scoped and not function scoped.
Principles of Writing Consistent, Idiomatic JavaScript
// 2.B.1.4
// const and let, from ECMAScript 6, should likewise be at the top of their scope (block).
// Bad
function foo() {
let foo,
bar;
if ( condition ) {
bar = "";
// statements
}
}
// Good
function foo() {
let foo;
if ( condition ) {
let bar = "";
// statements
}
}
我想知道,根据良好做法,在这种情况下放置变量最方便的方法是什么:
如果你有一个函数,只有当条件语句为真时它的内容才会被执行,你会将变量放在哪里?
addMessage (text) {
let lastMessage = React.findDOMNode(this.refs.messages);
if (text.length) {
ChatActions.addMessage(text);
lastMessage.scrollTop = lastMessage.scrollHeight;
}
}
或者像这样:
addMessage (text) {
if (text.length) {
let lastMessage = React.findDOMNode(this.refs.messages);
ChatActions.addMessage(text);
lastMessage.scrollTop = lastMessage.scrollHeight;
}
}
如果不在if
语句外使用,则在if
语句内。
放在if语句中。特别是如果变量赋值成本很高,因为除非满足 if 语句,否则永远不会使用它。
在 if 语句中。根据您的代码,只有 IF 语句需要 lastMessage 函数 - 因此您应该将其括起来。否则,每次 运行 您的 if 检查都在执行计算,无论您是否需要它。那会很浪费。
是的,绝对
如许多 JavaScript 风格指南所述:
Airbnb JavaScript Style Guide() {
13.4 Assign variables where you need them, but place them in a reasonable place.Why? let and const are block scoped and not function scoped.
Principles of Writing Consistent, Idiomatic JavaScript
// 2.B.1.4
// const and let, from ECMAScript 6, should likewise be at the top of their scope (block).
// Bad
function foo() {
let foo,
bar;
if ( condition ) {
bar = "";
// statements
}
}
// Good
function foo() {
let foo;
if ( condition ) {
let bar = "";
// statements
}
}