【问题标题】:conditional ternary operator is giving error: Expected an assignment or function call and instead saw an expression when setting a variable条件三元运算符给出错误:预期赋值或函数调用,而是在设置变量时看到表达式
【发布时间】:2016-07-22 20:18:48
【问题描述】:

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

我收到以下错误:

期待一个赋值或函数调用,却看到了一个表达式

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

【问题讨论】:

  • 三元不能包含赋值,但返回值可以赋值。

标签: javascript ternary-operator


【解决方案1】:

每个文档的正确方法是:

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

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

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

【讨论】:

  • baller... 这很有意义。我现在完全明白了。谢谢!!!
【解决方案2】:

你应该这样写

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

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 2013-08-06
    • 2020-04-05
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2013-04-21
    • 2020-03-21
    • 2011-05-09
    相关资源
    最近更新 更多