Javascript 空字符串与空字符串,不同的结果-Vue2

Javascript 空字符串与空字符串,不同的结果-Vue2,javascript,vue.js,Javascript,Vue.js,Null和空字符串在代码中给出不同的结果: <b-button :disabled="phone && phone.length < 9"></b-button> 在这种情况下,phone等于false,因此我的和&phone.length

Null和空字符串在代码中给出不同的结果:

<b-button :disabled="phone && phone.length < 9"></b-button>
在这种情况下,
phone
等于false,因此我的
和&phone.length<9
语句不会触发,据我所知

但是如果我设置了
电话:'
(空字符串),那么我的
电话
设置为
true
,并触发下一条语句
&&phone.length<9


此条件的目的是在电话号码为空或少于9位时禁用按钮。

您可以使用计算属性轻松检查输入:
var-app=新的Vue({
el:“#应用程序”,
数据:{
电话:空,
inputText:null
},
计算:{
isDisabled(){
return(this.phone?this.phone.length<9:true)
}
}
})


电话:{{phone}
isDisabled:{{isDisabled}
问题在于
:禁用
需要
/
(IMO)。但是,您使用的短路求值通常返回最后一个求值表达式(因为它是
&&
运算符)

现在,可以是非布尔值。因此,我认为在您的表达式中,您实际上返回了一个
“null”
(字符串),该字符串对于
:disabled
,可能是有效的
truthy
值。换句话说,等于真

如果将表达式修改为以下条件,则可以获得所需的内容

编辑条件:

 !(phone && phone.length && phone.length >=10). 

谢谢,问题不在于
null
是否与空字符串不同?Alexander,这不是你的问题。如果您计算
布尔(“”
布尔(null)
,您会注意到它们都返回false。@lovrodoe,那么理解
电话和&phone.length<9
是我的错吗?如果
phone
返回
true
,只有这样,
和&
之后的语句才会被激发?这是正确的。我在console中进行了测试,似乎
”“&&true
”“&&false
都返回一个空字符串,并且不对第二条语句求值。如果有null,则会有类似的行为,它总是返回null,并且不会对第二条语句求值。这两个都不返回true或false。但在我的例子中,为什么它对空字符串有效呢
phone&&phone.length<9
-如果它在第一条语句中返回
false
,则我的按钮将永远不会被禁用,但对于空字符串,它将被禁用(返回true)。根据文档:,如果与布尔值一起使用,它们都应该返回
true
,以便
true
我已经尝试了double
!!电话
条件,与我在开始时发布的相同。@AlexanderKim刚刚更新了条件。这应该行得通。针对
null
未定义的
'
'abc'
(长度==3)进行测试。似乎会归还你需要的东西。如果没有,请告诉我。干杯
 !(phone && phone.length && phone.length >=10).