Auf dieser Seite

Variablendeklaration mit Blockgültigkeit

Diese Warnkategorie wird von qmllint als „ [block-scope-var-declaration] “ bezeichnet.

Eine Variable wurde mit „var“ innerhalb eines Blockbereichs deklariert

Was ist passiert?

Eine JavaScript-Variable wurde mit „var“ innerhalb eines Blockgültigkeitsbereichs deklariert, beispielsweise im Körper einer „while“-Schleife. Auch wenn es so aussieht, als sei die Variable nur innerhalb dieses Gültigkeitsbereichs verwendbar, kann tatsächlich auch außerhalb darauf zugegriffen werden, da sie in den Gültigkeitsbereich der innersten Funktion oder des innersten QML-Bindings angehoben wird.

Warum ist das problematisch?

Es kann verwirrend sein, den Geltungsbereich einer solchen Variablen nachzuverfolgen, und sie könnten versehentlich andere Variablen überschatten.

Beispiel

import QtQuick

Item {
    id: root
    property int count: 0
    function countItems() {
        let sum = 0
        {
            var count = root.children.length
            sum += count
        }
        // ... more additions to sum
        count = sum // modifies the function local variable, not root.count
    }
}

Um diese Warnung zu beheben, verwenden Sie stattdessen „let“ oder „const“ oder deklarieren Sie die Variable direkt im Funktionsgültigkeitsbereich.

import QtQuick

Item {
    id: root
    property int count: 0
    function countItems() {
        let sum = 0
        {
            let count = root.children.length
            sum += count
        }
        // ... more additions to sum
        count = sum // modifies the function local variable, not root.count
    }
}

© 2026 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.