如果参数为空,则不附加到字符串

时间:2015-08-13 23:51:33

标签: javascript

我想写一个简单的javascript函数来附加给定参数的值字符串,但前提是参数有值。这是一个例子:

function foo(bar){
  return "hello" + bar;  
}

如果我运行foo()我会得到“helloundefined”我希望它只返回“你好”,如果我运行foo('world')现在可以使用“helloworld”

我以为我可以这样做:

return "hello" + null || bar但我会得到“hellonull”

return "hello" + if(bar){bar}语法无效。

6 个答案:

答案 0 :(得分:4)

一个好的"清洁"这样做的方式(逻辑在语言中是相同的)这样做是为了测试你的输入:

function foo(bar){
  if (bar) {
    return "hello" + bar;  
  }
  return "hello";
}

那么你可以使用传统的三元运算符表达式,这非常难看:

 function foo(bar) {
   return "hello" + (bar ? bar : '');
 }

但是通常的,常用的和广泛使用的javascript单线语成语完全相同的是:

function foo(bar) {
  return "hello" + (bar || '');
}

因为它更简洁,所以非常被广泛使用。但是我更喜欢选项1以获得代码的可读性/可访问性,即使它要编写更多字符(我们正在编写代码,而不是高尔夫,代码需要对其他人可读)。有时"其他人"你是六个月了。)

编辑:

为了完成我的回答,我将添加@oriol建议:

function foo(bar = ''){
  return "hello" + bar;  
}

这实际上是简洁的优雅。在任何可以运行ES6的地方使用!

答案 1 :(得分:3)

在ECMAScript 6中,您可以使用default paramenters

function foo(bar = ''){
  return "hello" + bar;  
}

答案 2 :(得分:0)

这个解决方案怎么样?它使用三元运算符(如果没有,则使用简写)。

通过function foo(bar) { return bar.trim() != "" ? "Hello " + bar : "Hello"; } alert(foo("")); alert(foo("Script47")); 输出的内容是:

你好

然后

Hello Script47

trim

我使用//get the snapshot String snapshotName = "My_Snapshot_0"; Snapshots.OpenSnapshotResult open = Games.Snapshots.open(mGoogleApiClient, snapshotName, false).await(); if (!open.getStatus().isSuccess()) { Log.w(TAG, "Could not open Snapshot for update."); return false; } //delete the snapshot Snapshots.DeleteSnapshotResult delete = (Snapshots.DeleteSnapshotResult)Games.Snapshots.delete(mGoogleApiClient, open.getSnapshot().getMetadata()).await(); if (!delete.getStatus().isSuccess()) { Log.w(TAG, "Failed to delete Snapshot."); return false; } 来阻止空格。

http://jsfiddle.net/7oukdaty/

答案 3 :(得分:0)

您可以先检查function hello(bar) { var p = document.getElementById("foo"); if (bar) { p.innerHTML = "hello" + bar; } else { p.innerHTML = "hello"; } } hello("world");是否存在。

<p id="foo"></p>
{{1}}

答案 4 :(得分:0)

使用三元运算符:

function foo(bar){
    return "hello" + (bar ? bar : '');  
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

答案 5 :(得分:0)

检查参数是否为null并执行任何操作。

function foo(bar) {
    if (!bar) {
        alert("no bar defined");
    }
    else {
        alert("hello" + bar);
    }
}