【发布时间】:2019-02-20 22:48:27
【问题描述】:
我在研究javascript,结果出乎意料,不知道哪里出错了,按照下面可测试的例子:
const createStore = () => ({
state: {
life: 100
},
mutations: {
reduceOneOfLife(state) {
state.life -= 1;
},
reduceValueOfLife(state, valueForReduce) {
state.life -= valueForReduce;
}
},
getters: {
currentLife(state) {
return state.life;
}
},
commit(keyMutation, payload) {
!payload ? this.mutations[keyMutation](this.state) : this.mutations[keyMutation](this.state, payload);
},
get(KeyGetters) {
return this.getters[KeyGetters](this.state);
}
});
const store = createStore();
store.mutations.reduceValueOfLife(store.state, 0);
let currentLife = store.get('currentLife');
console.log(currentLife); // -> 100
console.log(currentLife === 100); // -> true
store.commit('reduceValueOfLife', 10);
currentLife = store.get('currentLife');
console.log(currentLife); // -> 90
console.log(currentLife === 100); // -> false
store.commit('reduceValueOfLife', 0);
currentLife = store.get('currentLife');
console.log(currentLife); // -> NaN
console.log(currentLife === 90); // -> false
我希望在测试中获得 90 和 true store.commit('reduceValueOfLife', 0);...。
【问题讨论】:
-
提示:
!payload是true当payload === 0(或false,或''或null或undefined或NaN- 我想这就是全部) -
@JaromandaX 我不知道,以为只是“未定义”。
!payload会发生哪些情况? -
我在编辑中列出了它们:p 对于您正在寻找的逻辑,我建议
(payload === undefined) ? .... -
@JaromandaX 我只需要检查它是否是
undefined,谢谢光。我不知道,但我认为这是缺乏教育,人类对他获得的任何一点力量都会生气。 -
另一个选项是检查
arguments.length < 2
标签: javascript function nan