conditional ternary operator is giving error: Expected an assignment or function call and instead saw an expression when setting a variable

conditional ternary operator is giving error: Expected an assignment or function call and instead saw an expression when setting a variable

我想设置一个参数来知道调用某个端口时使用什么 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);

我收到以下错误:

Expected an assignment or function call and instead saw an expression

我什至将 uri 设置在函数 testA testB 中,但出现了同样的错误。我已经阅读了这个问题,它看起来像是一个错误的错误。我应该改用 if 语句吗——哪个工作正常?

每个文档的正确方法是:

uri = (portConfig === '443') ? 'wss://' : 'http://';

它确实需要赋值,而不是表达式。

事实上,您使用的方式可以被浏览器吃掉和解析而不会出错,因为赋值 return 是分配的值。但这不是推荐的方法,因为三元运算符被设计为 return 值(它们总是这样做,即使你之后不使用该值),与 if() 条件不同,它是像使用 if().

那样使用它被认为是不明智的

你应该这样写

uri =  (portConfig === '443') ? 'wss://' : 'http://';