我想写一个简单的javascript函数来附加给定参数的值字符串,但前提是参数有值。这是一个例子:
function foo(bar){
return "hello" + bar;
}
如果我运行foo()
我会得到“helloundefined”我希望它只返回“你好”,如果我运行foo('world')
现在可以使用“helloworld”
我以为我可以这样做:
return "hello" + null || bar
但我会得到“hellonull”
或
return "hello" + if(bar){bar}
语法无效。
答案 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;
}
来阻止空格。
答案 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);
}
}