¿Cómo se verifica si una propiedad no está definida en qml?
Esto es lo que estoy tratando de hacer:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
¿Cómo se verifica si una propiedad no está definida en qml?
Esto es lo que estoy tratando de hacer:
Button {
id: myButton
text: if (text === "undefined"){"default text"}
}
Tratar:
text: text ? text : "default text"
"undefined"
es solo una representación de cadena de una referencia que no hace referencia a nada, al igual que None
, o NULL
en otros idiomas.
===
es un operador de comparación estricto, es posible que desee leer este hilo: /programming/523643/difference-between-and-in-javascript
if (text) { text } else {"default text"}
para ser exacto.if (object)
se evalúa como falso siobject
no está definido. Hack similar al estilo C if (puntero) que se evalúa como falso si el puntero tiene un valor de 0 (NULL). Vale la pena señalar que latext
variable utilizada para la propiedad de texto de un botón se toma desde fuera del alcance. Será mucho más claro con:text: inText ? inText : "default text"
oif(inText) { text } else {"default text"}
if (text is true) then {text = text} else {text = "default text"}
¿es esto exacto?if (text is true)
. Me resulta más fácil pensar comoif (text *is*)
oif (text exists)
. Otra buena fuente: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Esta respuesta me da una advertencia.
Cambiar
text
a en sumodelText
lugar arroja un error.Esto detiene la ejecución de Javascript para mí; es decir, la siguiente línea no se llama.
Vía Javascript
Lo mismo sucede al configurarlo a través de Javascript, pero es bastante detallado.
Utilizando
typeof
El
typeof
operador silencia el error y funciona como se esperaba.fuente
Para comparar con indefinido escribes
text === undefined
. Esto se evaluará como falso sitext
es asínull
.Si desea verificar si el valor está presente (es decir, verificar ambos
undefined
ynull
), úselo como condición en la declaración if o el operador ternario. Si necesita almacenar el resultado de la comparación como un valor booleano, usevar textPresent = !!text
(aunque doble!
puede parecer confuso para uno que lee el código).fuente