条件三元运算符给出错误:期望赋值或函数调用,但在设置变量时看到了一个表达式

Chr*_*hew 2 javascript ternary-operator

我想设置一个参数来知道在调用某个端口时要使用什么 uri。

这是我的代码:

  var portConfig = '443';
    (portConfig === '443') ? uri = 'wss://' : uri = 'http://';
    console.log(uri);
    var Ip = uri + "hereis.myurl.com";
    var port = portConfig;
    console.log(Ip);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

期望赋值或函数调用,而是看到了一个表达式

我什至将 uri 设置在函数 testA testB 内,但发生了同样的错误。我已经阅读了这个问题,它似乎是一个错误的错误。我应该改用 if 语句 - 哪个工作正常?

nic*_*ael 6

每个文档的正确方法是:

uri = (portConfig === '443') ? 'wss://' : 'http://';
Run Code Online (Sandbox Code Playgroud)

它确实期望赋值,而不是表达式。

事实上,你使用的方式可以被浏览器吃掉和解析而不会出错,因为赋值会返回赋值的值。但这不是推荐的方式,因为三元运算符旨在返回值(并且它们总是这样做,即使您之后不使用该值),与if()条件不同,并且像您使用的那样使用它被认为是不明智的if().