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的内置函数。

4. 最简单的选择运算符||:

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

如果=后面的第1个值计算结果为布尔值“真”,则a的值取第1个,否则取第2个。

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

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

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

6. 有趣的void操作符:

<a href="javascript:void(0)">我是一个死链接</a>

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

7. 跳转至新页面,并且保证浏览器不会再回退:

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

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

8. 几秒钟之后返回上一页:

<meta http-equiv="refresh" content="3; url=javascript:window.history.go(-1);">

其中content为设置的时间。

9. 在打开的子窗口中刷新父窗口:

window.opener.location.reload();

10. 验证是否为负数的正则表达式:

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

11. 用JavaScript打印页面:

window.print();

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

12. 显示/隐藏一个DOM元素:

el.style.display = ‘‘;

el.style.display = ‘none‘;

13. 实现alert()中的文本换行:

alert(‘jiangxiao\nbo‘);

“\n”代表换行符。

14. 实现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);

用原型链形式继承,构造函数重新指向新创建的对象。

15. 理解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);
}

16. 检测Shift、 Alt、 Ctrl 键:

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

17. 获取屏幕分辨率的宽、 高:

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

window.screen这个对象包含了有关用户屏幕的信息。

18. 脚本永不出错的方式:

window.onerror = function(m,f,l){
    return true;
};

19. 让JavaScript处理字符和ASCII码之间的转换:

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

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

20. 访问对象属性的代码:

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

访问对象属性一般存在两种方式,通过“.”或“[]”。一般情况下两种方式等效,但是“[]”还可以动态设置属性,如:

var get = ‘name‘;
demo[get]; //ki

21. 把一个值转换为布尔型的最简单方式:

!!‘demo‘; //true
!!‘‘; //false
!!‘0‘; //true
!!‘1‘; //true
!!{}; //true
!!true; //true

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

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

!!navigator.geolocation;

在HTML5中,navigator.geolocation可以获取设备的当前位置,通过双“!”就可以判断是否支持此API,即是否支持HTML5。

23. 判断浏览器是否支持Canvas:

function isCanvas(){
    return !!document.createElement(‘canvas‘).getContext;
}

24. 判断IE版本:

window.navigator.appVersion

上述代码返回一个字符串,表示所使用浏览器的版本号。它可能只包含一个数字,比如5.0,还可能包含一些其他的相关信息。

25. 声明变量的缩略写法与复杂写法:

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

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

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

26. 采取惰性载入的方案提高函数代码的性能:

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;
        }
    }
})();

27. 捕捉Ctrl+Enter按键:

if(event.ctrlKey && event.keyCode==13){
    console.log(‘You pressed the Ctrl + Enter‘);
}

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

28. 获取浏览器插件的数目:

navigator.plugins.length;

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

29. 实现对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表示用户代理。

30. 使用原生JavaScript判断是否是移动设备浏览器:

var mobileReg = /iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i;
if((mobileReg.test(window.navigator.userAgent.toLowerCase()))){
    alert(‘移动设备!‘);
}else{
    alert(‘非移动设备!‘);
}
时间: 2024-10-03 22:49:28

30 段 JavaScript 代码的相关文章

因一段JavaScript代码引发的闲扯

前两天,一朋友给我发了一段JavaScript代码: function f1(){ var n=999; nAdd=function(){ n+=1 }; function f2(){ alert(n); } return f2; } var result1=f1(); var result2=f1(); result1(); // 999 result2();//999 nAdd(); result1(); // 是999而不是1000,这是为何呢? result2();//1000 问题的原

[javascript]两段 javaScript 代码的逻辑比较

两段 javaScript 代码的逻辑比较: #1 if(tagName.length < 3){    $(this).parent().addClass('active');    tagName.push($(this).text());    tagId.push($(this).attr('label-id')); } else {    Hnb.ui.showError("最多只能选择三个标签");} #2 if(tagName.length > 3){    

30行JavaScript代码实现一个比特币量化策略

精简极致的均线策略 30行打造一个正向收益系统 原帖地址:https://www.fmz.com/bbs-topic-new/262 没错!你听的没错是30行代码!仅仅30行小编我习惯先通篇来看看 代码,这样能有个宏观的了解! 策略参数如下 参数 描述 类型 默认值 FastPeriod 入市快线周期 数字型(number) 3 SlowPeriod 入市慢线周期 数字型(number) 7 EnterPeriod 入市观察期 数字型(number) 3 ExitFastPeriod 离市快线周

简化一段javascript代码

在实际的项目中,我们经常会有如下的需求:从一个map中获取某key的值,如果发现对应的key的值为null,则为该key创建一个值(一般为初始值),然后把这个值存回到map中,代码如下: var value = map[key]; if(value == null){ value = ""; map[key] = value; } 但是总感觉这段代码很恶心,为啥,太啰嗦,太长. 实际项目中,这种操作会技巧多,如果到处都是这种操作的话,就很让人崩溃.坏蛋必须死.##赋值操作合并首先,va

JavaScript代码段整理笔记系列(二)

上篇介绍了15个常用代码段,本篇将把剩余的15个补齐,希望对大家有所帮助!!! 16.检测Shift.Alt.Ctrl键: event.shiftKey; //检测Shift event.altKey; //检测Alt event.ctrlKey; //检测Ctrl 17.获取屏幕分辨率的宽.高: window.screen.height; //获取屏幕的高 window.screen.width; //获取屏幕的宽 18.脚本永不出错的方式: window.onerror=function(m

前端福利!10个短小却超实用的JavaScript 代码段

JavaScript正变得越来越流行,它已经成为前端开发的第一选择,并且利用基于JavaScript语言的NodeJS,我们也可以开发出高 性能的后端服务,甚至我还看到在硬件编程领域也出现了JavaScript的身影.JavaScript正在逐渐进化为一门全能的开发语言.下面是我收集 的10段实用JavaScript代码,基于它们你还可以创造出更强大的JS插件或功能函数. 但用好JavaScript并不容易,你除了需要掌握它的语法并知道如何写出高质量的代码之外,还需要了解如何解决那些几乎在每个项

这几行 javascript 代码能让你的浏览器崩溃?

先上Demo,有兴趣的可以先试一下: http://www.zeakhold.com/crash/ (温馨提示:访问前请保存好浏览器其他窗口的任务,整人被打概不负责嘿嘿~) 事情还是得从 IT Security Tweets ™   的一篇推文说起: 也就是说,这段 javascript 代码,能让浏览器崩溃并且能让iPhone重启?! 于是打开电脑跃跃欲试,当满怀好奇地在浏览器上执行了这段代码后发现: Chrome 立马陷入了卡死的状态,更要命的是点击关闭窗口没响应!! 打开任务管理器,发现C

JavaScript代码放在HTML代码不同位置的差别

通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代码放置在 HTML 文档的任何地方.但放置的地方,会对 JavaScript 代码的正常执行会有一定影响,具体如下所述. 1.放置于<head></head>之间 将 JavaScript 代码放置于 HTML 文档的 <head></head> 标签之间是一个通常的做法.由于 HTML 文档是由浏览器从上到下依次载入的,将 JavaScript 代码放置于

在HTML标签&lt;a/&gt;中调用javascript代码

<a/>标签的“href”属性可以是一个有效的URL,表示跳转的目的地,除此之外,href还可以是一段javascript代码.当为“href”设置javascript代码时,格式如下:<a href=”javascript:……;” />.当点击这种形式的超链接时,浏览器将执行“href”中设置的javascript代码.需要注意的是,如果代码执行之后的返回值是一个有效值(除“undefined”之外的值)的话,当前页面的内容将会被返回值替换! W3C标准不推荐使用这种方法来调用