• Javascript一些实用技巧


    1.利用NumberObj的toString(radix)方法获取随机数字字母字符串,radix是表示数字的基数,就是进制,如下所示

    var getRndAlphaNumStr = (len) => {
        var rndStr = '';
        for (; rndStr.length < len; rndStr += Math.random().toString(36).substr(2));
        return rndStr.substr(0, len);
    };
    getRndAlphaNumStr(10)
    "ugyjusoh2a"

    2.禁止他人利用iframe形式加载你的网页,如下所示

    function banIframeLoading(){
        (window.location !== window.top.location)&&(window.top.location=window.location);
    }

    3.浮点数取整,利用|0和~~位运算来做,性能相对parseInt要好些,如下所示

    function getInteger(num){
        console.time('~~计时器');
        for(var i=0;i<num;i++){
            ~~Math.random();
        }
        console.timeEnd('~~计时器');
    
        console.time('|0计时器');
        for(var j=0;j<num;j++){
            Math.random()|0;
        }
        console.timeEnd('|0计时器');
    
        console.time('parseInt计时器');
        for(var k=0;k<num;k++){
            parseInt(Math.random());
        }
        console.timeEnd('parseInt计时器');
    }
    getInteger(10000000)
    ~~计时器: 2608.639ms
    |0计时器: 2562.203ms
    parseInt计时器: 5111.675ms

    4.不借助第三变量实现两个值的交换,如下所示

    function swap(a,b){
        a = [b,b=a][0];
        return [a,b];
    }
    console.log(swap(10,30));
    [30, 10]

    5.因为全局变量undefined在函数作用域中可以被重新赋值,导致某些情况下利用undefined作比较时发生错误,因此需要获取原始undefined值,如下所示

    (function(){
        var undefined = 1;
        console.log(undefined);
    })()
    1
    ------------------- 使用 void 0 来获取原始undefined----------
    (function(){
        console.log(!!void 0);
    })()
    false

    5.利用Math.max方法求数组的最大值,如下所示

    function max(arr){
        return Math.max.apply(null,arr);
    }

    6.数组随机洗牌

    function arrSuffle(arr){
        return arr.sort(function(){
            return Math.random()-0.5;
        });
    }
    console.log([2,3,199,20,45]);

    7.利用正则表达式获取指定的cookie

    function getCookie(cKey){
        return document.cookie.match(new RegExp('(?:^|'+'\s+|;+)'+cKey+'=([^;]*)','i'))[1];
    }

    8.快速获取对象的属性

    function getObjKeys(obj){
        var arr = [];
        for(arr[arr.length] in obj);
        return arr;
    }

    9.在前置括号的情况下,不会自动插入分号,如下所示

    var a = 1
    (a=1)
    VM2329:3 Uncaught TypeError: 1 is not a function(…)

     

  • 相关阅读:
    从排序开始(二) 希尔排序
    Linux之入侵痕迹清理总结
    MySQL使用痕迹清理~/.mysql_history
    WINDOWS之入侵痕迹清理总结
    SQL注入攻击技巧总结
    PHP iconv函数字符串转码导致截断问题
    PHP中is_numeric函数十六进制绕过0day
    反射型xss绕过IE xss filter
    Dedecms最新版本存储型XSS
    网站程序+服务器提权思路总结
  • 原文地址:https://www.cnblogs.com/zmxmumu/p/5647315.html
Copyright © 2020-2023  润新知