为什么第二个函数调用中<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.1/vue.min.js"></script>
<script src="https://unpkg.com/vuelidate/dist/vuelidate.min.js"></script>
<script src="https://unpkg.com/vuelidate/dist/validators.min.js"></script>
<div id="app">
<input v-model="$v.user_price.$model" placeholder="user_price" type="number" :class="status($v.user_price)">
<p class="error" v-show="respectMinPrice">user price must be greater or equal to min selling price</p>
</div>
是_value
?我花了一段时间才找到这个错误。
foo
答案 0 :(得分:3)
为了更好地理解,我在测试代码中加上了一个括号:
(value || Math.random() > 0.5)
由于始终定义value
(non null
),条件评估为true并将'foo'
分配给'_value
'
希望这能为您解释它。
答案 1 :(得分:2)
因为表达式
const _value = value || Math.random() > 0.5 ? 'foo' : 'bar';
评估为:
const _value = (value || (Math.random() > 0.5)) ? 'foo' : 'bar';
条件运算符的优先级低于表达式中的其他运算符。
value
是一个非空字符串,因此在布尔上下文中其值为true
。因此,条件的计算结果为true
,最终结果始终为'foo'
。
答案 2 :(得分:1)
因为:
/proc/pid/cmdline
所以:
> 'bar' == true
false
const _value = value || Math.random() > 0.5 ? 'foo' : 'bar';
将被随机分配值_value
或'foo'
,因为'bar'
是value
的值是'bar'
,因此第二个或表达式false
的一半将被评估并分配给||
。
答案 3 :(得分:1)
尝试一下。
const _value = value || (Math.random() > 0.5 ? 'foo' : 'bar');
因为在您的代码中使用JS进行检查
`if(value || Math.random() > 0.5){
_value = 'foo';
}else{
_value ='bar'
}`
答案 4 :(得分:0)
构造const a = b || c
是常见的Javascript简写。这意味着:
如果b
不是 fassy ,请将其分配给a
。否则,将c
分配给a
。
它也可以写为const a = b ? b : c;
或
const a;
if (b) a = b;
else a = c;
通常说来,如果它为空或值为零,则为 falsy 。