我认为下面的代码可以更简单。这段代码可以优化吗?
let name = app.short_name;
if (name === undefined) {
name = app.name;
if (name === undefined) {
name = 'Untitled';
}
}
答案 0 :(得分:9)
使用Logical OR
(||
)运算符
let name = app.short_name || app.name || 'Untitled';
答案 1 :(得分:8)
您可以在logical OR ||
中使用short-circuit evaluation的默认链。
let name = app.short_name || app.name || 'Untitled';
但我建议使用与name
不同的变量名称,因为它通常是window
的属性
答案 2 :(得分:4)
Javascript会指定它认为true
的内容。如果您与||
(OR
)连接,则会检查每个值是否为真,直到找到并分配了一个真值。
有许多值变为false
,例如:
undefined
0
null
''
(空字符串)NaN
这就是你可以写
的原因let name = app.short_name || app.name || 'Untitled';
因为如果app.short_name
有一个值,它将是true
而不是false
并且已分配。但如果是undefined
,则会将false
视为app.name
,如果是true
,则会检查undefined
。如果是false
,则会再次将其视为'Untitled'
,因此最终true
被视为name
并被视为static const char* vertex_shader_text =
"#version 330\n"
"uniform mat4 MVP;\n"
"layout(location = 1) in vec3 vCol;\n"
"layout(location = 0) in vec2 vPos;\n"
"out vec3 color;\n"
"void main()\n"
"{\n"
" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n"
" color = vCol;\n"
"}\n";
static const char* fragment_shader_text =
"#version 330\n"
"in vec3 color;\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
" FragColor = vec4(color, 1.0);\n"
"}\n";
并被分配到max
。可能想看看这个link。