Literaler Konstruktor
Diese Warnkategorie wird von qmllint mit [literal-constructors]
angegeben.
Verwenden Sie keine Funktion als Konstruktor
Was ist passiert?
Eine literale Konstruktionsfunktion wurde als Konstruktor verwendet.
Warum ist das schlecht?
Der Aufruf einer literalen Konstruktionsfunktion wie Number
als reguläre Funktion zwingt den übergebenen Wert in eine primitive Zahl. Der Aufruf von Number
als Konstruktor gibt jedoch ein von Number
abgeleitetes Objekt zurück, das diesen Wert enthält. Dies ist verschwenderisch und wahrscheinlich nicht das erwartete Ergebnis. Außerdem kann es zu unerwartetem oder verwirrendem Verhalten führen, da der zurückgegebene Wert nicht primitiv ist.
Beispiel
import QtQuick Item { function numberify(x) { return new Number(x) } Component.onCompleted: { let n = numberify("1") console.log(typeof n) // object console.log(n === 1) // false if (new Boolean(false)) // All objects are truthy! console.log("aaa") // aa } }
Um diese Warnung zu beheben, rufen Sie diese Funktionen nicht als Konstruktoren, sondern als normale Funktionen auf:
import QtQuick Item { function numberify(x) { return Number(x) } Component.onCompleted: { let n = numberify("1") console.log(typeof n) // number console.log(n === 1) // true if (Boolean(false)) console.log("aaa") // <not executed> } }
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.