qml 函数的默认参数给出语法错误

Posted

技术标签:

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

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

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

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

我可能做错了什么?

【问题讨论】:

【参考方案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 请显示您的代码。

以上是关于qml 函数的默认参数给出语法错误的主要内容,如果未能解决你的问题,请参考以下文章

通过 std::thread 将参数传递给函数时出现语法错误

Qml 文本元素语法错误

在构造函数中设置默认参数?语法[关闭]

在函数反应中传递默认参数值

为啥 Pydev 会给出内置关键字的语法错误?

使用类型提示时如何向函数添加默认参数?