zoukankan      html  css  js  c++  java
  • node.js初步总结

    一:先上一段代码

    process.argv.forEach(function (val, index, array) {
        console.log(index + ":" + val);
        if(index == 0) {
            console.log(array);  // 是个Array
        }
        // process.argv在forEach方法里以this直接引用
        if(index == process.argv.length - 1) {
            console.log(array == this);  // output false,因为array是Array.from(process.argv)获得的
            console.log(array.length);  // 可以不要分号,输出为:5
        }
    });
    // 输出:/usr/local/nodejs/bin/node,/home/silentdoer/tmp/test.js,bb,ss,uu nn
    console.log(" " + process.argv);
    var arr = [1, 'tt', 3, "tttss", 5];
    // 输出:1,tt,3,tttss,5;由上面的输出可知js中[]就类似java的数组,而Array反而像java的List
    console.log(" " + arr);
    //var list = new Array();
    //list.push(31, 'sss', 88, "uu", 19);  // 在后面添加元素
    var list = Array.from(arr);  // []在js里称为类数组,Array则是数组,不过个人更习惯将前者叫数组,后者叫List
    console.log(list);  // 自动会换行,console里还有其它输出方法如info/error等但都会换行
    list.forEach(function (val, index, array) {
        // true, value is from arr.;这里输出true说明forEach内部会判断this是否是Array的实例,是就直接作为array传给这里的function func(姑且这么描述,其实只需要func即可,脚本语言对类型不是那么敏感)
        console.log((array == list) + ":" + val + ":" + index);
    });

    var list2 = Array.from(list);  // 下面能够获得length说明Array.from(arg)的参数可以不是[],
    console.log(list == list2);  // false
    console.log(list2.length);  // 5
    console.log(list2 instanceof Array);  // true

    console.log(list instanceof Array);  // true

    list2 = Array.from("3b");  // 也ok,发现脚本语言也挺不错,各种随便写。。eval("3b")得到的还是"3b",而eval("33")获得的则是一个整数,不过此整数和"33"比较会相等,但是通过instanceof则能知道其当前的类型
    console.error(list2.length);  // 2,因为字符有两个
    console.error(list2[1]);  // b

    process.stdout.write("hello, ");  // 通过这个可以在终端上不换行输出
    process.stdout.write("world.");
    process.stdout.write(" ");

    // 这里再做个其它总结,eval方法,其实和bash里的很像,将字符串重新计算得到结果
    // 它的意思是比如存在字符串:"[{"pro1":"mm","pro2":3},{"pro1":88}]"那么将此字符串作为
    // 参数data的形参是不能data.length获得2的,而eval(data).length则可以,这样就有效的
    // 防止了因为弱语言的原因可能误传了json对象而是传的其字符串;

    然后终端上:node test.js bb ss "uu  nn"回车,输出结果

    0:/usr/local/nodejs/bin/node
    [ '/usr/local/nodejs/bin/node',
      '/home/silentdoer/tmp/test.js',
      'bb',
      'ss',
      'uu nn' ]
    1:/home/silentdoer/tmp/test.js
    2:bb
    3:ss
    4:uu nn
    false
    5

    /usr/local/nodejs/bin/node,/home/silentdoer/tmp/test.js,bb,ss,uu nn

    1,tt,3,tttss,5
    [ 1, 'tt', 3, 'tttss', 5 ]
    true:1:0
    true:tt:1
    true:3:2
    true:tttss:3
    true:5:4
    false
    5
    true
    hello, world.

    可知对于js而言,[]和Array均具备forEach方法,通过上面的测试可以猜测JSON数组或Array的forEach方法的实现为(js语法还不是很清楚,大致是这样实现)

    void forEach(func) {  // func就类似C#的委托
      var array = null;
      if(!(this instanceof Array)){
        array = Array.from(this);
      }else{
        array = this;
      }
    for(int i=0;i<this.length;i++) { // 假定this.length就是数组或集合的元素个数的写法,this[i]就是数组或集合的第i个元素的写法; func(this[i], i, array); } }
    
    
  • 相关阅读:
    性能测试
    怎样开始用selenium进行自动化测试
    手机自动化测试的原理
    黑盒测试与白盒测试的区别
    白盒测试方法
    黑盒测试概念及设计方法
    接口测试的概念及常用方法
    运用c语言和Java写九九乘法表
    appium键值对的应用
    压力测试和负载测试的区别
  • 原文地址:https://www.cnblogs.com/silentdoer/p/8783806.html
Copyright © 2011-2022 走看看