美文网首页Web 前端开发 让前端飞
JavaScript常用方法小总结

JavaScript常用方法小总结

作者: 张chuner | 来源:发表于2018-04-03 09:00 被阅读0次

    JavaScript可以说是前端的基础了,对后面框架的学习和深入发展都是很关键的,需要打好基础。

    1、使用js实现toFixed函数,设置参数来决定保留几位小数

    function formatFloat(src, pos)
    {
        return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);
    }
    

    2、闭包和作用域

    (1)、

    (function() {
        var val = 1;
        var json = {
            val: 10,
            dbl: function() {
                val *= 2;
            }
        };
        json.dbl();//这里调用的是val=1,如果这里是this.val则指向json内部
        alert(json.val + val);//10+2=12;
    }());
    //弹出12
    

    (2)、

    window.val = 1;
    var json = {
        val: 10,
        dbl: function() {
            this.val *= 2;
        }
    };
    json.dbl();//通过json调用dbl方法,把json里面的val改为20
    var dbl = json.dbl;//把dbl函数赋值给dbl
    dbl();//全局作用域,调用dbl()函数,把window的val改为2
    json.dbl.call(window);//同上,window的val改为4
    alert(window.val + json.val);//4+20=24
    //弹出24
    

    (3)、

    var a=6;
    setTimeout(function(){
    
        console.log(a);
        a=666;
    
    },1000)
    a=66;
    //弹出66 66(相隔1S)
    

    (4)、

    var foo = 'Hello';
    (function() {
        var bar = 'World';
        alert(foo + bar);//HelloWorld
    })();
    alert(foo + bar);//报错,因为bar未定义
    

    (5)、

    foo.x的值是什么?
    var foo={n:1};
    var bar=foo;
    foo.x=foo={n:2};//undefined
    

    (6)、

    var test=(function(i){
      return function(){
        alert(i*2);
      }
     }(2));
     test(5);//结果为4(只输出一个4)
    

    (7)、

    var a=1,b=2;
     (function(p){
        alert(a+p);//NAN
    var c=arguments[0];
    var a=2;
    alert(c);//2
    alert(a+c);//4
     })(b);
    

    (8)、

    function C1(name){
      if(name)
        this.name=name;//new C1().name没有值,所以会去原型链上找,结果是Tom
    }
    function C2(name){
      this.name=name;//name没有定义,所以new C2().name的值存在,但为undefined
    }
    function C3(name){
      this.name=name||'John';//new C3().name值为John
    }
    C1.prototype.name='Tom';
    C2.prototype.name='Tom';
    C3.prototype.name='Tom';
    alert((new C1().name)+(new C2().name)+(new C3().name));//TomundefinedJohn
    

    3、

    alert(1&&2);//弹出2
    alert(1||2);//弹出1
    

    注意:
    1、只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。
    2、只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。
    3、只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
    4、只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

    4、数组
    已知道如下数组:
    var arr = [[1,2,2],[3, 4, 5, 5],[6, 7, 8, 9,[11,12,[12,13,[14]]]],10];
    编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组:
    var res= [1,2,3,4,5,6,7,8,9,10,11,12,13,14]

    /** 
     * 解析数组,然后去重,排序 
     * @type Array 
     */  
      
    //解析数组
    var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];  
    var newArray = [];  
    function getArray(array) {  
        array.forEach(function(e) {  
            if (typeof e === "object") {  
                getArray(e);  
            } else {  
                newArray.push(e);  
            }  
        });  
    }  
    getArray(arr);  
      
    //去重 
    Array.prototype.distinct = function() {  
        return this.reduce(function(newArray1, newValue) {  
            if (newArray1.indexOf(newValue) === -1)  
                newArray1.push(newValue);  
            return newArray1;  
        }, []);  
    };  
    newArray = newArray.distinct();  
    
    //排序 
    newArray.sort(function(a, b) {  
        return a - b;  
    });  
    console.log(newArray);  
    

    未完待续。。。

    相关文章

      网友评论

        本文标题:JavaScript常用方法小总结

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