在示例骨干Todo MVC应用程序中遇到以下内容,它对我没有任何意义,谷歌搜索并且没有骰子,
在todo模型中有这种切换方法:// Toggle the `completed` state of this todo item.
toggle: function() {
this.save({
completed: !this.get('completed')
});
}
我一直都明白!意思是'不',这对我来说没有意义,正如我在假设触发切换事件时所假设的那样,想要保存已完成的状态。
我错过了什么?
答案 0 :(得分:2)
基本原则: 假设,我们有一个方法,返回一个布尔状态。
var state = obj.getState('completed');
如果getState
返回true
,则变量state
也是true
现在:
var state = !obj.getState('completed');
我们 反转 结果,这意味着:如果getState
返回true
,则变量state
设置为{{1 }}
为了进行false
之类的切换,我们可以
true - false - true - false
如果a为真,则为假,如果为假,则为真等。
答案 1 :(得分:1)
它确实意味着“不”,这就是正在进行状态的实际切换。在这种情况下,!
运算符是逻辑运算符,并返回complementarty布尔值。
this.get('completed')
调用将获取completed
属性的当前状态,例如值true
。
!
运算符将获得互补值,例如值false
。
此值用于创建对象文字,例如{ completed: false }
。
该对象用于调用save
方法,因此对象中的值将用作completed
属性的新值。