Yanıtlar:
Deneyin:
text: text ? text : "default text"
"undefined"Bir referans tıpkı şey başvurmuyor sadece bir dize temsilidir Noneveya NULLdiğ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ı. textBir 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 textiçin modelTextyerine 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;
}
}
}
typeoftypeofOperatö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 textolduğunu null.
Değerin olup olmadığını kontrol etmek istiyorsanız (yani, ikisini de kontrol edin undefinedve nullif), 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).