javascript - Ember.js 带有 OR 条件的 IF 语句导致意外行为

标签 javascript

似乎是一个简单的问题,但我就是不明白为什么下面的代码根本不起作用......

关于性别1:

如果我使用计算属性并尝试使用条件 OR 对几个字符串进行检查,则输出到标签的结果始终为“男/女/其他”,即使输入 sex1 包含其中之一...

关于性别2:

但是,如果我不使用条件 OR 并仅针对“男性”进行测试,则一切都会按预期进行......

模板

<script type="text/x-handlebars" data-template-name="index">
    <label>:</label><br/><br/>
    <div>
        <label>Gender_not_working:</label>
        {{input value=gender1}}
        <label>{{verifyGender1}}</label>
    </div><br/>
    <div>
        <label>Gender_working:</label>
        {{input value=gender2}}
        <label>{{verifyGender2}}</label>
    </div><br/>
  </script>

Controller

App.IndexController = Ember.Controller.extend({
  gender1: "",
  gender2: "",
  verifyGender1: Ember.computed('gender1', function(){
    console.log(this.get('gender1').toLowerCase());
    if(this.get('gender1').toLowerCase() !== "male"||"female")
    {return "male/female/other";}
    else
    {return "MKay";}
  }),
  verifyGender2: Ember.computed('gender2', function(){
    console.log(this.get('gender2').toLowerCase());
    if(this.get('gender2').toLowerCase() !== "male")
    {return "male/female/other";}
    else
    {return "MKay";}
  }),
});

此问题也出现在 JS Bin 上我创建的...

最佳答案

这是一个简单的 JavaScript 错误。
您无法像您尝试的那样将 1 个值与 2 个“潜在”值进行比较 (val1 !== val2 || val3)。您可以执行 (val1 !== val2 && val1 !== val3)([val2, val3].indexOf(val1) >= 0) ,可能还有一些其他方法也能达到同样的效果。

关于javascript - Ember.js 带有 OR 条件的 IF 语句导致意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504710/

相关文章:

Javascript:为什么我可以访问全局范围内函数内声明的内部名称?

javascript - 处理字符串中存在的 ASCII 代码

javascript - 使用 jquery 变量按宽度为 div 设置动画

javascript - 如何通过路由值将 JSON 数组发送到操作方法 (MVC 4)

javascript - 我如何知道用户是否在选择框中选择了相同的项目

javascript - 如何在 HTML 元素上获得最终的、最终计算出的样式值?

javascript - jQuery animate() 显示错误 $(...).animate 不是一个函数

javascript - ReactJS:使用枚举进行条件渲染

javascript - 在 javascript 中寻找正确的正则表达式以进行模式匹配

javascript - 错误缺少 } 且返回后无法到达中断