javascript,这段代码(嵌套的IF语句)可以更短吗?

时间:2017-06-14 06:47:50

标签: javascript

我认为下面的代码可以更简单。这段代码可以优化吗?

let name = app.short_name;
  if (name === undefined) {
    name = app.name;
    if (name === undefined) {
      name = 'Untitled';
    }
  }

3 个答案:

答案 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