我如何知道何时使用 if 或 switch 语句?
How do I know when to use if or switch statement?
我想根据我的 url 参数构建我的 data
对象。
var $data = {};
if(params.assessmentId !== undefined){
$data.assessmentId = params.assessmentId;
}
if(params.classroomId !== undefined){
$data.classroomId = params.classroomId;
}
if(params.studentId !== undefined){
$data.studentId = params.studentId;
}
if(params.courseContentId !== undefined){
$data.courseContentId = params.courseContentId;
}
console.log($data);
我想先检查它们是否存在,然后进行相应的设置。
我拥有的足够好吗?
我应该改用 switch 语句吗?
switch 语句在您的情况下不会真正起作用,因为您一直在检查不同的键。 Switch 适用于单个值,因此您可以根据 courseContentId:
的值使用它来执行不同的操作
switch(params.courseContentId ) {
case undefined:
code block
break;
case 10:
code block
break;
default:
default code block
}
我不会使用 switch 或 if,但这段代码可以做同样的事情,而且更好:
var $data = {};
var params = {};
params.assessmentId = 11;
for (var n in params) {
$data[n] = params[n]
}
console.log($data);
您只是将值从一个对象复制到另一个对象,因此您可以简单地遍历它并且您的 $data
对象将只接收在 params
.
中设置的值
在您提供的示例中,您实际上并不需要所有 if
语句。只需按您的操作分配 $data 属性即可。如果 params 中的某些内容未定义,它将不会反映在您的 $data 对象上。
PS。 switch 语句不会以任何方式帮助您。 switch 语句用于根据 THE SAME 变量的多个可能值来分支代码。不是不同的。
Is what I have is good enough?
是的。
如果您希望它更短,请在预期的 属性 名称上使用循环。
Should I use a switch statement instead?
没有。 switch
语句具有完全不同的目的。
如果您只有这些数量的病例,那么看起来还可以!!但如果你有很多条件要检查,那么你会检查,
跳转到下一个子句,检查,跳转到下一个子句等等。
另一方面,对于 "switch",JVM 加载要比较的值并遍历值 table 以找到匹配项,这在大多数情况下速度更快。
注意:switch 语句并不总是比 if 语句快。它比一长串 if-else 语句的扩展性更好,因为 switch 可以根据所有值执行查找。但是,对于短暂的情况,它不会更快,可能会更慢。
我想根据我的 url 参数构建我的 data
对象。
var $data = {};
if(params.assessmentId !== undefined){
$data.assessmentId = params.assessmentId;
}
if(params.classroomId !== undefined){
$data.classroomId = params.classroomId;
}
if(params.studentId !== undefined){
$data.studentId = params.studentId;
}
if(params.courseContentId !== undefined){
$data.courseContentId = params.courseContentId;
}
console.log($data);
我想先检查它们是否存在,然后进行相应的设置。
我拥有的足够好吗?
我应该改用 switch 语句吗?
switch 语句在您的情况下不会真正起作用,因为您一直在检查不同的键。 Switch 适用于单个值,因此您可以根据 courseContentId:
的值使用它来执行不同的操作switch(params.courseContentId ) {
case undefined:
code block
break;
case 10:
code block
break;
default:
default code block
}
我不会使用 switch 或 if,但这段代码可以做同样的事情,而且更好:
var $data = {};
var params = {};
params.assessmentId = 11;
for (var n in params) {
$data[n] = params[n]
}
console.log($data);
您只是将值从一个对象复制到另一个对象,因此您可以简单地遍历它并且您的 $data
对象将只接收在 params
.
在您提供的示例中,您实际上并不需要所有 if
语句。只需按您的操作分配 $data 属性即可。如果 params 中的某些内容未定义,它将不会反映在您的 $data 对象上。
PS。 switch 语句不会以任何方式帮助您。 switch 语句用于根据 THE SAME 变量的多个可能值来分支代码。不是不同的。
Is what I have is good enough?
是的。
如果您希望它更短,请在预期的 属性 名称上使用循环。
Should I use a switch statement instead?
没有。 switch
语句具有完全不同的目的。
如果您只有这些数量的病例,那么看起来还可以!!但如果你有很多条件要检查,那么你会检查, 跳转到下一个子句,检查,跳转到下一个子句等等。
另一方面,对于 "switch",JVM 加载要比较的值并遍历值 table 以找到匹配项,这在大多数情况下速度更快。
注意:switch 语句并不总是比 if 语句快。它比一长串 if-else 语句的扩展性更好,因为 switch 可以根据所有值执行查找。但是,对于短暂的情况,它不会更快,可能会更慢。