【问题标题】:Default arguments for qml function gives syntax errorsqml 函数的默认参数给出语法错误
【发布时间】:2017-05-23 07:15:57
【问题描述】:

此代码在浏览器托管的 JavaScript 环境中运行良好:

    function foo(a=true)
    {
        console.log(a)
    }

但是在 qml 中做同样的事情就是给syntax error。

我可能做错了什么?

【问题讨论】:

    标签: javascript qt qml


    【解决方案1】:

    在 QML 中,你应该把函数写成

    function foo(a) {
        if (a === undefined) a = true
    
        console.log(a)
    }
    

    语法

    function foo(a=true)
    

    不支持,因为 ECMA-262 6th edition 中引入了此语法,而 QML 仅实现 fifth edition(从 Qt 5.11 开始)。

    【讨论】:

    • 我已经这样做以避免语法问题。您可以指出哪些文件是不允许的?我似乎想不出任何理由不在 QML 托管环境中包含它。
    • 添加了对可能原因的引用。
    【解决方案2】:

    从 Qt 5.12 开始,这段代码可以正常工作。 See release note.

    • JavaScript 引擎现在支持 ECMAScript 7

    希望这对未来的人们有所帮助。

    【讨论】:

    • 这在 Qt 5.12.4 中不起作用。仍然出现语法错误。 @derm 答案是我的解决方案。
    • 适用于 Qt5.12.9 :) @ramtheconqueror 请显示您的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多