var money=0;
money = (null)?0:money;
console.log(money);
// money = 0 返回0, money = null 返回0,money = 100返回100,,这个是为什么
一般不都是这样么
var money=0;
money = (money)?money:0;
console.log(money);
var money=0;
money = (null)?0:money;
console.log(money);
// money = 0 返回0, money = null 返回0,money = 100返回100,,这个是为什么
一般不都是这样么
var money=0;
money = (money)?money:0;
console.log(money);
var money=0;
money = (null)?0:money;
console.log(money);
// money = 0 返回0, money = null 返回0,money = 100返回100,,这个是为什么
这段完全是无效代码,而且money = null 返回是null而不是0,因为最终简化下来就money = money
因为null
是假值,这个表达式永远是false
自然找后面那一个呀。
但你用money
又不同了,这是一个变量,变量里面的值根据你的赋值会有所变化。假如默认值是0
, 后面的值修改了这个变量的值,改为10
. 那么就能是真值啦。
var money = 0;
money = money ? money : 0;
// 此时 money 没有发生变化,由于 0 是假值,因此赋值为 0
console.log(money); //0
money = null;
money = money ? money : 0;
// 此时程序运行到某段函数,对 money 这个值赋值为 null,后面又进行了三目判断赋值
// 由于 null 也是假值,三元表达式的结果是 0
console.log(money); // 0
money = 10;
money = money ? money : 0;
// 此时 money 变成了真值,三元表达式求出真值得那个一个选项
// 由于真值选项那个分支也是 money 自身的值,因此将 10 重新赋值给 money。得到结果 10
console.log(money); // 10
我觉得题主想问的是真假值判断的问题,你可以看这篇文章: 条件语句的简写技巧
8 回答5.9k 阅读✓ 已解决
9 回答9.3k 阅读
6 回答4.9k 阅读✓ 已解决
5 回答3.6k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答9.9k 阅读
5 回答7.2k 阅读✓ 已解决
js中表示否定意义的对象有:
false, 0, '', null, undefined, NaN
;https://developer.mozilla.org...
直接三目运算符 初始化赋值就可以不需要先初始化 0