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.