Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果参数为空,则不要附加到字符串_Javascript - Fatal编程技术网

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

Javascript 如果参数为空,则不要附加到字符串,javascript,Javascript,我想编写一个简单的javascript函数来附加到给定参数的值字符串中,但前提是这些参数具有值。以下是一个例子: 函数foo(bar){ 返回“hello”+条; }这个解决方案怎么样?它使用三元运算符(如果为else,则简写) 它将通过警报输出以下内容: 你好 然后 你好,脚本47 我使用trim来防止空白 您可以先检查参数是否存在 函数hello(条){ var p=document.getElementById(“foo”); 如果(巴){ p、 innerHTML=“hello”+条

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

函数foo(bar){
返回“hello”+条;

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

它将通过
警报
输出以下内容:

你好

然后

你好,脚本47

我使用
trim
来防止空白


您可以先检查
参数是否存在

函数hello(条){
var p=document.getElementById(“foo”);
如果(巴){
p、 innerHTML=“hello”+条;
}否则{
p、 innerHTML=“你好”;
}
}
你好(“世界”)

一种很好的“干净”方法(不同语言的逻辑相同)是测试输入:

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的地方使用

在ECMAScript 6中,您可以使用:

函数foo(bar=''){ 返回“hello”+条; }
使用三元运算符:

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

检查参数是否为null,然后执行任何操作

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

返回'hello'+(条| |')啊,我忘了放括号了!非常感谢。添加此作为答案,以便我可以接受。为了澄清,当参数未传递时,其值为
未定义
,而不是
。在这里它可以工作,因为使用了松散的
==
,但它不能与
==
一起工作。道格拉斯·克罗克福德会避开我。
function foo(bar) {
    if (!bar) {
        alert("no bar defined");
    }
    else {
        alert("hello" + bar);
    }
}