美文网首页
你不知道的js温习

你不知道的js温习

作者: Vijay_ | 来源:发表于2017-12-26 03:24 被阅读18次
    • js循环双值
    for(var i = 0,j = 0;i<5,j<3;i++,j++){console.log(i,j);}
    //打印结果0,0;1,1;2,2;
    //中间的i<5,j<3;for循环条件语句如果有多个条件,满足一个即可  是做的||判断
    
    • typeof 妙用,防范机制,不会导致未定义的变量报错 而是返回undefined
    console.log(typeof a); //undefined
    console.log(b);//ReferenceError: b is not defined
    
    • 字符串方法 借用数组方法 因为实现很类似 字符串不可变 所以不能借用改变自身方法 如reverse,push,....
    ```javascript
    var a  = "123124";
    a = [].map.call(a,function (item,index,arr) {
      return +item*2;
    }).join("");
    console.log(a);//246248
    
    ```
    
    • Number方法 Number.EPSILON设置机器精度 来判断两个浮点型小数计算后的值
    ```javascript
    function floatNumberIsEqual(num1,num2) {
    

    //获取两个值的绝对值 如果小于机器精度就说明是相等的
    return Math.abs(num1 - num2) < Number.EPSILON;
    }
    console.log(floatNumberIsEqual((0.1+0.2),0.3));
    ```

    • 数组伪乱序
    ```javascript
    var arr = [1,2,3,4,5];
    

    arr.sort(function (pre,cur) {
    return Math.random() - 0.5;
    });
    console.log(arr);
    ```

    • 基础类型是值传递,复合类型(对象)是引用传递,搞清楚深拷贝和浅拷贝。考虑vue父子通信时传递对象给子控件,子控件修改该对象的值时父控件的该值也会发生改变,因为引用的是同一对象!

          var obj = {arr:[1,2,3],cc:undefined};
      
      //对json安全的(满足json格式,没有function 和 undefined)对象进行深拷贝
      var jsonStr = JSON.stringify(obj);
      var otherObj = JSON.parse(jsonStr);
      console.log(obj); //{ arr: [ 1, 2, 3 ], cc: undefined }
      console.log(otherObj); //{ arr: [ 1, 2, 3 ] }
      console.log(obj === otherObj); //false
      console.log(obj.arr === otherObj.arr); //false
      
      //对js对象进行浅拷贝(只拷贝值传递的基础类型)
      var assignObj = Object.assign({},obj);
      console.log(assignObj);//{ arr: [ 1, 2, 3 ], cc: undefined }
      console.log(assignObj === obj); // false
      console.log(assignObj.arr === obj.arr); //true
      
      
    • 基本类型的对象类型(如Number,String,...)虽然变量引用的是该对象,但是在操作时会将该值从对象中提取出来进行运算,所以修改基本类型对象引用的值不能达到真正修改引用。
    • 强转Number
      • Number(xxx),+xxx都可以强转
      • 转换Number先调用对象的valueOf方法 如果没返回值则调用toString方法.得到的基础类型返回值再进行number转换
    • 强转String
      • String(xxx),xxx+""
      • 先调用toString如果没有返回值则调用valueOf

    看到73页

    相关文章

      网友评论

          本文标题:你不知道的js温习

          本文链接:https://www.haomeiwen.com/subject/kqfdgxtx.html