javascript - 条件三元运算符给出错误 : Expected an assignment or function call and instead saw an expression when setting a variable

标签 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);

我收到以下错误:

Expected an assignment or function call and instead saw an expression

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

最佳答案

每个文档的正确方法是:

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

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

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

关于javascript - 条件三元运算符给出错误 : Expected an assignment or function call and instead saw an expression when setting a variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38534670/

相关文章:

javascript - 如何使用 AngularJS 确定元素的类型?

java - BigDecimal 除法抛出 ArithmeticException : Division by zero even when i check against it

c# - 在 C# 中使用条件运算符键入结果

c - (分配中的左值无效)当我运行它时发生此错误。这是什么意思?

java - 需要 boolean 值,找到 int?

javascript - CMS编辑方案

javascript - 检测两个或多个 Javascript 字符串中的短语

javascript - 除非在页脚中执行,否则脚本不起作用

javascript - 速度和内存受益于在 JavaScript 循环外声明变量?

javascript - JavaScript有switch的表达形式吗?