30 段子 JavaScript 代码

  1. 前端人员时时碰到的题目就是怎么样区分IE及非IE浏览器,JavaScript代码是:

    if(!+[1,]) { //IE11不支持

     alert('这是IE浏览器');
    

    }else{

     alert('这不是IE浏览器');
    

    }

  2. 将日期一直换为数值:

    alert(+new Date());

  3. 非IE浏览器下将看似数组对象 “arguments” 转换为数组:

    Array.prototype.slice.call(arguments);

arguments不是Array的实例,因此无是真的勤组,也便无slice(),那为何以“Array.prototype.slice”而休是“Array().slice”或“[].slice”呢?因为及时片栽艺术效率比小,故使代码中之写法访问Array的放到函数。

  1. 绝简易的挑三拣四运算符||:

    var a = 0 || 3;
    console.log(a); //结果3

要=后面的第1个价计算结果也布尔值“真”,则a的值取第1单,否则取第2只。

  1. 单链式运算(如:a++ -1):

    var a = 10;
    console.log(a++ -1);

先执行“a-1”,在执行“a=a+1”。

  1. 有趣的void操作符:

    我是一个死链接

void是一致种植操作符,用来计算一个表达式但未归回值。用法:javascript:void(expression),expression是一个要计算的JavaScript标准表达式。

  1. 跳转到新页面,并且保证浏览器不会见再也回退:

    location.replace(“http://www.baidu.com”); //跳转到百度

location的replace()方法可用一个新的文档替换当前文档,并且该办法还会见覆盖History对象被的记录。

  1. 几秒钟后返回上一致页:

内部content为安的岁月。

  1. 于打开的子窗口中刷新父窗口:

    window.opener.location.reload();

  2. 说明是否为负数的正则表达式:

    /^-\d+$/.test(str);

  3. 所以JavaScript打印页面:

    window.print();

window.print()属于浏览器内置的API,可以一直打印页面。

  1. 展示/隐藏一个DOM元素:

el.style.display = ”;

el.style.display = ‘none’;

  1. 落实alert()中之文书换行:

alert(‘jiangxiao\nbo’);

“\n”代表换行符。

  1. 实现ECMAScript5中的Object.create()函数:

    function clone(proto){

    function _clone(){}
    _clone.prototype = proto;
    _clone.prototype.constructor = _clone;
    return new _clone();  // 等价于 Object.create(Person);
    

    }
    var me = clone(Person);

故原型链形式延续,构造函数重新对新创建的对象。

  1. 懂JavaScript中之闭包:

诸如,以下代码会输出5不良,结果还是5,如何输出0、 1 、 2、 3、 4?

for ( var i=0;i<5;i++ ){
    setTimeout(function(){
        console.log(i);
    },1000);
}

运闭包的规律实现,代码如下:

for ( var i=0;i<5;i++ ){
    (function(e){
        setTimeout(function(){
            console.log(e);
        },1000);
    })(i);
}
  1. 检测Shift、 Alt、 Ctrl 键:

    // 以下是浏览器内置的检测方法
    event.shiftKey; //检测Shift
    event.altKey; //检测Alt
    event.ctrlKey; //检测Ctrl

  2. 抱屏幕分辨率的有余、 高:

    window.screen.height; //获取屏幕的高
    window.screen.width; //获取屏幕的富裕

window.screen这个目标涵盖了关于用户屏幕的消息。

  1. 本子永不出错的章程:

    window.onerror = function(m,f,l){

    return true;
    

    };

  2. 让JavaScript处理字符和ASCII码之间的变:

    console.log(“a”.charCodeAt(0)); //97
    console.log(String.fromCharCode(75)); //K

charCodeAt()返回指定位置字符的Unicode编码;fromCharCode()接收一个指定的Unicode值,然后返回一个字符串。

  1. 做客对象属性之代码:

    var demo = {name:’ki’};
    demo.name; //ki
    demo[‘name’]; //ki

访对象属性一般设有个别栽方式,通过“.”或“[]”。一般情形下零星种办法同,但是“[]”还得动态设置属性,如:

var get = 'name';
demo[get]; //ki
  1. 把一个价转换为布尔型的最好简便方法:

    !!’demo’; //true
    !!”; //false
    !!’0′; //true
    !!’1′; //true
    !!{}; //true
    !!true; //true

使用“!”操作符两次于,可以拿一个价转换为布尔型。

  1. 判断浏览器是否支持HTML5:

    !!navigator.geolocation;

每当HTML5中,navigator.geolocation可以取装备的当前职务,通过对“!”就得判断是否支持此API,即是否支持HTML5。

  1. 认清浏览器是否支持Canvas:

    function isCanvas(){

    return !!document.createElement('canvas').getContext;
    

    }

  2. 判断IE版本:

    window.navigator.appVersion

上述代码返回一个字符串,表示所采取浏览器的版本号。它或许才包含一个数字,比如5.0,还可能含有有别样的有关消息。

  1. 宣称变量的缩略写法与复杂写法:

    /复杂写法/
    var x;
    var y;
    var z=3;

    /缩略写法/
    var x,y,z=3;

JavaScript是比灵活的语言,编程时尽可能采用缩略写法,这样会提高JavaScript的特性。

  1. 动惰性载入的方案提高函数代码的性能:

    function addEvents(type,element,fun){

    if(element.addEventListener){
        element.addEventListener(type,fun,false);
    }
    else if(element.attachEvent){
        element.attachEvent('on'+type,fun);
    }
    else{
        element['on'+type] = fun;
    }
    

    }

所谓惰性载入就是当首先浅实行代码后,用函数代码内部的法子覆盖原有代码,代码如下:

var addEvents = (function(){
    if(document.addEventListener){
        return function(type,element,fun){
            element.addEventListener(type,fun,false);
        }
    }
    else if(document.attachEvent){
        return function(type,element,fun){
            element.attachEvent('on'+type,fun);
        }
    }
    else{
        return function(type,element,fun){
            element['on'+type] = fun;
        }
    }
})();
  1. 捕捉Ctrl+Enter按键:

    if(event.ctrlKey && event.keyCode==13){

    console.log('You pressed the Ctrl + Enter');
    

    }

event.ctrlKey检测Ctrl键,event.keyCode==13检测Enter键。

  1. 抱浏览器插件的数:

    navigator.plugins.length;

navigator用来检测浏览器的版、所支撑的MIME类型、已安装的外挂程序(plugin)。

  1. 贯彻对Windows、 Mac、 Linux、 UNIX操作系统的论断:

    var osType = “”,

    windows = (navigator.userAgent.indexOf('Windows',0)!=-1)?1:0,
    mac = (navigator.userAgent.toLowerCase().indexOf('mac',0)!=-1)?1:0,
    linux = (navigator.userAgent.indexOf('Linux',0)!=-1)?1:0,
    unix = (navigator.userAgent.indexOf('X11',0)!=-1)?1:0;
    
    if(windows) osType = 'Windows';
    else if(mac) osType = 'Mac';
    else if(linux) osType = 'Linux';
    else if(unix) osType = 'Unix';
    console.log(osType);
    

navigator.userAgent表示用户代理。

  1. 使原生JavaScript判断是否是动装备浏览器:

    var mobileReg = /iphone|ipod|android.mobile|windows.phone|blackberry.*mobile/i;
    if((mobileReg.test(window.navigator.userAgent.toLowerCase()))){

    alert('移动设备!');
    

    }else{

    alert('非移动设备!');
    

    }