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)); //
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('非移动设备!');
}
30 段 JavaScript 代码的更多相关文章
- [javascript]两段 javaScript 代码的逻辑比较
两段 javaScript 代码的逻辑比较: #1 if(tagName.length < 3){ $(this).parent().addClass('active'); tagN ...
- 请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用
请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框.程序可以判断出用 户点击的是“确认”还是“取消”. 解答: <HTML> <HEAD> <TI ...
- 因一段JavaScript代码引发的闲扯
前两天,一朋友给我发了一段JavaScript代码: function f1(){ var n=999; nAdd=function(){ n+=1 }; function f2(){ alert(n ...
- 30行JavaScript代码实现一个比特币量化策略
精简极致的均线策略 30行打造一个正向收益系统 原帖地址:https://www.fmz.com/bbs-topic-new/262 没错!你听的没错是30行代码!仅仅30行小编我习惯先通篇来看看 代 ...
- 一段JavaScript代码
eval(function(p, a, c, k, e, d) { e = function(c) { return c.toString(36) }; if (!''.replace(/^/, St ...
- JavaScript代码段整理笔记系列(二)
上篇介绍了15个常用代码段,本篇将把剩余的15个补齐,希望对大家有所帮助!!! 16.检测Shift.Alt.Ctrl键: event.shiftKey; //检测Shift event.altKey ...
- JavaScript代码段整理笔记系列(一)
30段JavaScript代码——上篇 1.如何区分IE及非IE浏览器: if(!+[1,]){ //IE 11 不支持 alert("这是 IE 浏览器"): }else{ al ...
- C# 代码中调用 Javascript 代码段以提高应用程序的配置灵活性(使用 Javascript .NET 与 Jint)
一般来说,我们需要在开发应用软件的配置文件中,添加一些参数,用于后续用户根据实际情况,自行调整. 配置参数,可以放在配置文件中.环境变量中.或数据库表中(如果使用了数据库的话).通常,配置数据,以 k ...
- 前端福利!10个短小却超实用的JavaScript 代码段
JavaScript正变得越来越流行,它已经成为前端开发的第一选择,并且利用基于JavaScript语言的NodeJS,我们也可以开发出高 性能的后端服务,甚至我还看到在硬件编程领域也出现了JavaS ...
随机推荐
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
参考帖子: http://blog.csdn.net/wabiaozia/article/details/50803581 方法参考: { "token":"" ...
- Bypassing PatchGuard on Windows x64
[说明] 1. 本文是意译,加之本人英文水平有限.windows底层技术属菜鸟级别,本文与原文存在一定误差,请多包涵. 2. 由于内容较多,从word拷贝过来排版就乱了.故你也可以下载附件. 3. ...
- C#设计模式--装饰器模式
0.C#设计模式-简单工厂模式 1.C#设计模式--工厂方法模式 2.C#设计模式--抽象工厂模式 3.C#设计模式--单例模式 4.C#设计模式--建造者模式 5.C#设计模式--原型模式 6.C# ...
- jQuery事件处理(三)
继续了解jQuery对浏览器兼容的处理 1.keyHooks对键盘按键的封装 keyHooks: { // 一些键盘相关的属性 props: "char charCode key keyCo ...
- ubuntu 用aptitude代替apt-get处理依赖性问题
aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具.与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些.举例来说,aptitud ...
- CSS学习之浮动
首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...
- Autojump:一个可以在 Linux 文件系统快速导航的高级 cd 命令
相关博客:https://linux.cn/article-3401-1.html 对于那些主要通过控制台或终端使用 Linux 命令行来工作的 Linux 用户来说,他们真切地感受到了 Linux ...
- iOS - 沙盒机制(SandBox)和获取沙盒路径
iOSAPP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URLScheme.沙盒里面的文件可以是照片.声音文件.文本 ...
- squid白名单
http_access deny all #取消注释 http_access allow all --> http_access allow xxx_custom_ip #添加系统服务器IP白名 ...
- thinkphp结合layui上传图片
简单示例: <script type="text/javascript"> layui.use(['form', 'layedit','element', 'layda ...