字符串连接在javascript中不起作用

字符串连接在javascript中不起作用,javascript,string,ternary-operator,string-concatenation,Javascript,String,Ternary Operator,String Concatenation,我正在尝试这个代码 <script> var x=1; var temp = '{"value":'+ (x==1)?1:0 +'}'; console.log(temp); </script> var x=1; var temp='{“value”:'+(x==1)?1:0+'}'; 控制台日志(temp); 并期望给出这样的输出 {“值”:1} 但这只是安慰1 为什么不是整个obj。一串 谁能告诉我怎么了吗?在缺少的括号旁边 var te

我正在尝试这个代码

<script>
    var x=1;
    var temp = '{"value":'+ (x==1)?1:0 +'}';
    console.log(temp);
</script>

var x=1;
var temp='{“value”:'+(x==1)?1:0+'}';
控制台日志(temp);
并期望给出这样的输出
{“值”:1}
但这只是安慰
1
为什么不是整个obj。一串
谁能告诉我怎么了吗?

在缺少的括号旁边

var temp = '{"value":'+ (x == 1 ? 1 : 0) +'}';
//                      ^^^^^^^^^^^^^^^^
要使a高于加号,可以使用另一种方法,将a用于具有ES6的对象

这将生成一个对象,而不是一个字符串,后者更适合生成。要使用字符串化值,请以所需格式创建字符串

var x=1,
值=x==1?1 : 0,
温度={value};

log(JSON.stringify(temp))您的三元语句后面紧跟着另一个它不懂如何读取的
+
。它显示为“0+”[…无]不完整

要单独计算该语句以便在连接字符串中使用,您需要在另一个语句中计算该语句,或者将其括在括号中

var x=1;
var temp='{“value”:'+(x==1?1:0)+'}';

console.log(temp)
如下更改表达式


var temp='{“value”:'+(x==1?1:0)+'}'

(圆括号)
@NiettheDarkAbsol您能更详细地告诉我一点吗
x==1?1:0
->
(x==1?1:0)
也许我希望得到这样的输出{“值”:1},而在现代实现中,您可以用圆括号克服上面注释中所示的运算符优先级,您不再需要连接,因为模板文本可用<代码>var temp=`{“value”:${(x==1)?1:0}`