• 8.qml-ECMAScript(函数和JSON对象)


    1.函数
    函数的基本语法如下:

    function functionName(arg0, arg1, ... argN) {
    }
    // function : 关键字 // functionName : 函数名

    函数的注意事项如下:

    • 在ECMAScript中,函数的参数和C++不一样,不需要声明变量类型,可以是对象,也可以是var变量,还可以是方法.
    • 并且也可以不需要明确定义参数也能通过arguments访问(后面讲解)
    • 并且函数始终都有返回值,如果没有参数返回,那么默认返回的是 undefined.

    示例如下所示:

    Window{
        visible: true
    
        function funcNoRet() {
    
        }
        function funcRet(arg1) {
            return arg1;
        }
    
        function funcCall(argFunc, arg) {
            return argFunc(arg);
        }
    
        Component.onCompleted: {
            console.log(funcNoRet());   // 没有返回值,打印 undefined
            console.log(funcRet(123));  // 打印 123
            console.log(funcCall(funcRet, 456)); // 实际调用了funcRet(456) 打印456
        }
    }    

    2.函数的arguments 对象

    • 函数的参数可以不需要明确定义参数也能通过arguments访问到.
    • 并且arguments对象有个length属性,可以实时获取到传入的函数参数个数.

    示例如下所示:

    Window{
        visible: true
    
        function funcNoRet() {
    
        }
        function doAdd() {
            if(arguments.length == 1) {
                return arguments[0] + 5;
            } else if(arguments.length == 2) {
                return arguments[0] + arguments[1];
            }
        }
    
        Component.onCompleted: {
            console.log(doAdd(10));     // 输出 "15"
            console.log(doAdd(40, 20)); // 输出 "60"
        }
    }

    3.JSON对象-解析json
    JSON对象无需实例化就可以使用,它有个parse方法用来解析json,该方法如下所示:

    JSON.parse(text)  // text : json文本

    比如我们有个json配置:

    {
        "flag": 1,
        "name": "example",
        "arrays":
        [
            {
                "name": "arr1",
                "string": "ARRAY1"
            },
            {
                "name": "arr2",
                "string": "ARRAY2"
            }
        ]
    }

    代码如下所示:

    var str = '{"flag":1,' +
        ' "name":"example",'+
        ' "arrays":'+
        ' ['+
        ' '+
        ' { "name":"arr1",'+
        ' "stringName":"ARRAY1" },'+
        ' { "name":"arr2",'+
        ' "stringName":"ARRAY2"}'+
        ' ]}';
    
    const obj = JSON.parse(str);
    console.log(obj.flag); // 打印值 1
    console.log(obj.name); // 打印值 example
    console.log(obj.arrays[0].name); // 打印值 arr1

    4.JSON对象-生成json
    JSON有个stringify() 方法可以将一个 JavaScript 对象或值转换为 JSON 字符串.定义如下所示:

    JSON.stringify(value[, replacer [, space]])
    //value:将要序列化成 一个 JSON 字符串的值。
    //replacer:(可选)如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数为 null 或者未提供,则对象所有的属性都会进行处理。
    //space :(可选) 指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格

    示例如下所示:

    Window{
        visible: true
    
        function filterFunc(k, v) { // 过滤,将flag的value值+10
            if (k == "flag") {
                return v+10;
            }
            return v;
        }
    
        Component.onCompleted: {
    
        var obj = {
            flag: 1,
            name: 'example',
        };
    
        var arr1 = {
            name: 'arr1',
            stringName: 'ARRAY1'
        };
    
        var arr2 = {
            name: 'arr2',
            stringName: 'ARRAY2'
        };
    
        obj.arrays = [arr1, arr2];
        console.log(JSON.stringify(obj)); 
        console.log(JSON.stringify(obj, filterFunc, 4)); // 将flag的value值+10,并进行4个空格缩进
    }
    }    

    打印如下所示:


    人间有真情,人间有真爱。

    如果您喜欢这里,感觉对你有帮助,并且有多余的软妹币的话,不妨投个食吧,赞赏的时候,留下美句和你的博客地址哦~   戳这里看谁投食了


  • 相关阅读:
    java获得文件的最后修改时间
    【Tomcat】解决Tomcat catalina.out 不断成长导致档案过大的问题
    mysql报错Packet for query is too large (12238 > 1024). You can change this value
    【Tomcat】linux下实时查看tomcat运行日志
    linux下面MySQL变量修改及生效
    【Vim命令大全】史上最全的Vim命令
    (总结)Linux的chattr与lsattr命令详解
    MySql将查询结果插入到另外一张表
    dos中定义变量与获取常见的引用变量以及四则运算、备份文件(set用法)
    批处理BAT替换与截取字符串的用法t1=%a:~3%是什么意思
  • 原文地址:https://www.cnblogs.com/lifexy/p/14579283.html
  • Copyright © 2020-2023  润新知