Yanıtlar:
Deneyin:
text: text ? text : "default text"
"undefined"
Bir referans tıpkı şey başvurmuyor sadece bir dize temsilidir None
veya NULL
diğer dillerde.
===
katı karşılaştırma operatörü ise, bu konuyu okumak isteyebilirsiniz: /programming/523643/difference-between-and-in-javascript
if (text) { text } else {"default text"}
tam olarak. undefined if (object)
ise false olarak değerlendirir object
. İşaretçi 0 (NULL) değerine sahipse false olarak değerlendirilen C stili if (pointer) ile benzer bir saldırı. text
Bir düğmenin text özelliği için kullanılan değişkenin dış kapsamdan alındığını belirtmek gerekir . text: inText ? inText : "default text"
if(inText) { text } else {"default text"}
if (text is true) then {text = text} else {text = "default text"}
- bu doğru mu?
if (text is true)
. if (text *is*)
Veya olarak düşünmeyi daha kolay buluyorum if (text exists)
. Başka bir iyi kaynak: developer.mozilla.org/tr-TR/docs/Web/JavaScript/Reference/…
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: text ? text : "default text"
}
Bu cevap benim için bir uyarı veriyor.
QML Button: Binding loop detected for property "text"
Değişen text
için modelText
yerine hata verir.
ReferenceError: modelText is not defined
Bu benim için Javascript yürütülmesini durdurur; yani bir sonraki satır çağrılmaz.
Javascript aracılığıyla ayarlanırken de aynı şey olur, ancak oldukça ayrıntılıdır.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (modelText !== "undefined") {
myButton.text = modelText;
}
}
}
typeof
typeof
Operatör sesini kapatma hatası ve beklendiği gibi çalışır.
import QtQuick 2.3
import QtQuick.Controls 1.2
Button {
id: myButton
text: "default text"
Component.onCompleted: {
if (typeof modelText !== "undefined") {
myButton.text = modelText;
}
}
}
Undefined ile karşılaştırmak için yazıyorsunuz text === undefined
. Bu false olarak değerlendirecektir text
olduğunu null
.
Değerin olup olmadığını kontrol etmek istiyorsanız (yani, ikisini de kontrol edin undefined
ve null
if), if ifadesinde veya üçlü operatörde koşul olarak kullanın. Karşılaştırma sonucunu bir boolean değeri olarak saklamanız gerekiyorsa, kullanın var textPresent = !!text
(yine de !
, kod okunurken bir tanesi kafa karıştırıcı görünebilir).