未捕获的ReferenceError:if语句中的赋值中的左侧无效

时间:2014-03-12 05:11:01

标签: javascript

我收到此错误消息:

  

未捕获的ReferenceError:分配中的左侧无效   script.js:37 visaType script.js:37(匿名函数)

这是代码:

的script.js:

  function visaType() {
    var visaOld = $('#inputVisaOld').val();
    var visaNew = $('#inputVisaNew').val();

    if (visaOld = 'Studying Mandarin Chinese' && visaNew = 'Foreign Student') {
      // the error message points here
      return '<div class="alert alert-info" Documents for FR -> FS</div>'; 
    } else if (visaOld = 'Tourism' && visaNew = 'Joining Taiwananese Family') {
      return '<div class="alert alert-info" Documents for P -> TS</div>'; 
    } else {
      return '<div class="alert alert-error>Not allowed to change</div>'; 
    }
  }

HTML:

    <div class="form-group">
      <label for="inputVisa">Current Visa <span class="text-muted">(Optional)</span></label>
      <input type="text" class="form-control" id="inputVisaOld" placeholder="Enter Current Visa">
    </div>
    <div class="form-group">
      <label for="inputVisa">New Visa</label>
      <input type="text" class="form-control" id="inputVisaNew" placeholder="Enter Visa to Apply">
    </div>

可能是什么问题?

3 个答案:

答案 0 :(得分:2)

visaOld = 'Studying Mandarin Chinese'=个符号,这意味着您应该在比较时指定:visaOld === 'Studying Mandarin Chinese'

这是在一些地方,而不仅仅是那个地方。

答案 1 :(得分:1)

Javascript中的比较运算符为==,而不是=。所以它应该是:

if (visaOld == 'Studying Mandarin Chinese' && visaNew == 'Foreign Student') {
  // the error message points here
  return '<div class="alert alert-info" Documents for FR -> FS</div>'; 
} else if (visaOld == 'Tourism' && visaNew == 'Joining Taiwananese Family') {
  return '<div class="alert alert-info" Documents for P -> TS</div>'; 
} else {
  return '<div class="alert alert-error>Not allowed to change</div>'; 
}

=用于变量赋值。

答案 2 :(得分:1)

编程中最古老的错误之一。你的作业应该是比较。使用==代替=,它会起作用。

为什么当前代码有语法错误:

分配(=)位于运算符优先级&&之后。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence所以你的陈述正在评估如下

if (visaOld = ('Studying Mandarin Chinese' && visaNew) = 'Foreign Student') {

使用括号强制你想要的东西

if ((visaOld = 'Studying Mandarin Chinese') && (visaNew = 'Foreign Student')) {

但请记住,不建议在if语句中进行分配,也不建议您使用。