前者冷知识汇总,前端不敢问津的一头

前端不敢问津的另一方面–前端冷知识汇总

2015/09/08 · CSS,
HTML5,
JavaScript · 13
评论 ·
冷知识

本文作者: 伯乐在线 –
刘哇勇
。未经作者许可,禁止转发!
欢迎参加伯乐在线 专辑小编。

前端已经被嘲弄坏了!像console.log()可以向决定台出口图片等炫酷的玩意已经不是什么音信了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天见到Quora上一个帖子,刹那间又GET了成百上千前端技能,一些属于技术,一些则是奇怪的冷知识,一时间还消化不回复。现分类整理出来分享给大家,也填补了有些日常的聚积和扩展了有的情节。

前者已经被嗤笑坏了!像console.log()可以向决定台出口图片等炫酷的玩意已经不是什么音信了,像用||操作符给变量赋默许值也是人尽皆知的旧闻了,明日看看Quora上一个帖子,刹那间又GET了好多前端技能,一些属于技术,一些则是稀奇的冷知识,一时间还消化不东山再起。现分类整理出来分享给大家,也填补了有些常常的积淀和壮大了有的内容。

前者已经被嘲讽坏了!像console.log()可以向控制台出口图片等炫酷的钱物已经不是什么音讯了,像用||操作符给变量赋默许值也是人尽皆知的旧闻了,后天来看Quora上一个帖子,须臾间又GET了重重前端技能,一些属于技术,一些则是怪诞的冷知识,一时间还消化不回复。现分类整理出来分享给大家,也填补了一部分平时的积淀和扩展了一些情节。

前端已经被嗤笑坏了!像console.log()可以向控制台出口图片等炫酷的东西已经不是怎样音讯了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,前天来看Quora上一个帖子,刹那间又GET了过多前端技能,一些属于技术,一些则是奇妙的冷知识,一时间还消化不东山再起。现分类整理出来分享给大家,也填补了有些经常的积淀和扩大了有的情节。

HTML篇

HTML篇

HTML篇

HTML篇

浏览器地址栏运行JavaScript代码

以此很多个人相应依然清楚的,在浏览器地址栏可以一贯运行JavaScript代码,做法是以
javascript: 起头后跟要举行的语句。比如:

JavaScript

javascript:alert(‘hello from address bar :)’);

1
javascript:alert(‘hello from address bar :)’);

将上述代码贴到浏览器地址栏回车后alert正常执行,一个弹窗神现。

急需注意的是就算是通过copy
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码初始的javascript:,所以必要手动添加起来才能科学实施,而Firefox中固然不会自行去掉,但它根本就不接济在地方栏运行JS代码,sigh~

这一技艺在自我的另一篇博文《让Chrome
接管邮件连接,收发邮件更有益了》中有应用到,利用在浏览器地址栏中施行JavaScript代码将Gmail设置为系统的邮件接管程序。

浏览器地址栏运行JavaScript代码

浏览器地址栏运行JavaScript代码

浏览器地址栏运行JavaScript代码
其一很几个人应当依然清楚的,在浏览器地址栏可以一向运行JavaScript代码,做法是以javascript:伊始后跟要履行的言辞。比如:

浏览器地址栏运行HTML代码

如若说上边那条小秘密接头的人还算多的话,那条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏可以间接运行HTML代码!

例如在位置栏输入以下代码然后回车运行,会油但是生指定的页面内容。

data:text/html,<h1>Hello, world!</h1>

1
data:text/html,<h1>Hello, world!</h1>

亚洲必赢官网 1

以此很五个人应有照旧明白的,在浏览器地址栏能够直接运行JavaScript代码,做法是以
javascript: 初步后跟要推行的话语。比如:

那么些很四人应当照旧知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以
javascript: 开端后跟要履行的话语。比如:

javascript:alert('hello from address bar :)');

你造么,可以把浏览器当编辑器

依然浏览器地址栏上做文章,将以下代码贴到地址栏运行后浏览器变成了一个原始而简单的编辑器,与Windows自带的notepad一样,吼吼。

data:text/html, <html contenteditable>

1
data:text/html, <html contenteditable>

亚洲必赢官网 2

究竟多亏了HTML5中新加的 contenteditable 属性,当元素指定了该属性后,元素的内容成为可编制状态。

恢宏,将以下代码放到console执行后,整个页面将变得可编制,随意践踏吧~

JavaScript

document.body.contentEditable=’true’;

1
document.body.contentEditable=’true’;

亚洲必赢官网 3

javascript:alert(‘hello from address bar :)’);

javascript:alert(‘hello from address bar :)’);

将上述代码贴到浏览器地址栏回车后alert正常执行,一个弹窗神现。
内需注意的是如果是经过copy
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码先导的javascript:,所以需求手动添加起来才能科学实施,而Firefox中即便不会自动去掉,但它根本就不帮衬在位置栏运行JS代码,sigh~

运用a标签自动解析URL

多多时候大家有从一个URL中领取域名,查询关键字,变量参数值等的急需,而相对没悟出可以让浏览器方便地帮大家做到这一义务而不用我们写正则去抓取。方法就在JS代码里先成立一个
a 标签然后将急需分析的URL赋值给
a 的 href 属性,然后就收获了所有大家想要的了。

JavaScript

var a = document.createElement(‘a’); a.href =
”; console.log(a.host);

1
2
3
var a = document.createElement(‘a’);
a.href = ‘http://www.cnblogs.com/wayou/p/’;
console.log(a.host);

亚洲必赢官网 4

选取这一法则,稍微扩张一下,就赢得了一个进一步强壮的解析URL各部分的通用方法了。下边代码来自James的博客。

JavaScript

function parseURL(url) { var a = document.createElement(‘a’); a.href =
url; return { source: url, protocol: a.protocol.replace(‘:’,”), host:
a.hostname, port: a.port, query: a.search, params: (function(){ var ret
= {}, seg = a.search.replace(/^\?/,”).split(‘&’), len = seg.length, i
= 0, s; for (;i<len;i++) { if (!seg[i]) { continue; } s =
seg[i].split(‘=’); ret[s[0]] = s[1]; } return ret; })(), file:
(a.pathname.match(/\/([^\/?#]+)$/i) || [,”])[1], hash:
a.hash.replace(‘#’,”), path: a.pathname.replace(/^([^\/])/,’/$1′),
relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,”])[1],
segments: a.pathname.replace(/^\//,”).split(‘/’) }; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function parseURL(url) {
    var a =  document.createElement(‘a’);
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(‘:’,”),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,”).split(‘&’),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split(‘=’);
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,”])[1],
        hash: a.hash.replace(‘#’,”),
        path: a.pathname.replace(/^([^\/])/,’/$1′),
        relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,”])[1],
        segments: a.pathname.replace(/^\//,”).split(‘/’)
    };
}

将以上代码贴到浏览器地址栏回车后alert正常执行,一个弹窗神现。

将上述代码贴到浏览器地址栏回车后alert正常执行,一个弹窗神现。

浏览器地址栏运行HTML代码

页面拥有ID的要素会创制全局变量

在一张HTML页面中,所有安装了ID属性的因素会在JavaScript的实施环境中创建对应的全局变量,那意味
document.getElementById 像人的阑尾一样显得多余了。但骨子里项目中最好规矩该怎么写就怎么写,毕竟常规代码出乱子的空子要小得多。

<div id=”sample”></div> <script
type=”text/javascript”> console.log(sample); </script>

1
2
3
4
<div id="sample"></div>
<script type="text/javascript">
        console.log(sample);
</script>

亚洲必赢官网 5

亟待留意的是一旦是透过copy
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码起先的javascript:,所以需求手动添加起来才能科学执行,而Firefox中即便不会自行去掉,但它根本就不辅助在地点栏运行JS代码,sigh~
这一技艺在自身的另一篇博文《让Chrome
接管邮件连接,收发邮件更便宜了》中有应用到,利用在浏览器地址栏中实践JavaScript代码将Gmail设置为系统的邮件接管程序。

急需注意的是如果是通过copy
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开头的javascript:,所以须求手动添加起来才能科学执行,而Firefox中尽管不会活动去掉,但它根本就不帮助在地方栏运行JS代码,sigh~

即便说上面那条小秘密接头的人还算多的话,那条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏能够直接运行HTML代码!
比如在地点栏输入以下代码然后回车运行,会出现指定的页面内容。
data:text/html,<h1>Hello, world!</h1>

加载CDN文件时,可以省去HTTP标识

现在很盛行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全考虑部分CDN服务器使用HTTPS格局连接,而不少传统的HTTP,其实大家在运用时方可忽略掉那一个,将它从URL中节约。

<script src=”//domain.com/path/to/script.js”></script>

1
<script src="//domain.com/path/to/script.js"></script>

这点在事先一篇译文博客《jQuery编程最佳实践》中也有涉嫌。

浏览器地址栏运行HTML代码

这一技能在自我的另一篇博文《让Chrome
接管邮件连接,收发邮件更方便了》中有采纳到,利用在浏览器地址栏中实践JavaScript代码将Gmail设置为系统的邮件接管程序。

亚洲必赢官网 6

动用script标签保存任意音信

将script标签设置为 type=’text’ 然后方可在内部保存任意音信,之后能够在JavaScript代码中很有益地获得。

 

<script type=”text” id=”template”> <h1>This won’t
display</h1> </script>

1
2
3
<script type="text" id="template">
<h1>This won’t display</h1>
</script>

JavaScript

var text = document.getElementById(‘template’).innerHTML

1
var text = document.getElementById(‘template’).innerHTML

若是说上面那条小秘密接头的人还算多以来,这条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏可以平昔运行HTML代码!

浏览器地址栏运行HTML代码

你造么,可以把浏览器当编辑器

CSS篇

譬如在地方栏输入以下代码然后回车运行,会现出指定的页面内容。

假若说上边那条小秘密接头的人还算多的话,这条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏可以直接运行HTML代码!

或者浏览器地址栏上做文章,将以下代码贴到地址栏运行后浏览器变成了一个原始而简易的编辑器,与Windows自带的notepad一样,吼吼。

有关CSS的调戏

深信您看完以下代码后能够预料到会出现哪些意义。

CSS

*{ cursor: none!important; }

1
2
3
*{
    cursor: none!important;
}

亚洲必赢官网 7

data:text/html,<h1>Hello, world!</h1>

比如在地点栏输入以下代码然后回车运行,会冒出指定的页面内容。

data:text/html, <html contenteditable>

粗略的文字模糊效果

以下两行简单的CSS3代码可高达将文字模糊化处理的目标,出来的功力有点像使用PS的滤镜,so
cool!

CSS

前者冷知识汇总,前端不敢问津的一头。p { color: transparent; text-shadow: #111 0 0 5px; }

1
2
3
4
p {
    color: transparent;
    text-shadow: #111 0 0 5px;
}

亚洲必赢官网 8

您造么,可以把浏览器当编辑器

data:text/html,

亚洲必赢官网 9

垂直居中

有好很多次博主都有那般的急需,垂直居中体现某个DIV,大家驾驭CSS中天然有水平居中的样式
text-align:center 。唯独那一个垂直居中无解。

本来你可以将容器设置为 display:table ,然后将子元素也就是要笔直居中显示的元素设置为
display:table-cell ,然后加上来达成,但此种达成很多次会因为
display:table 而损坏全部布局,那还不如直接用table标签了吗。

上面那个样式利用了translate来都行完成了垂直居中样式,需IE9+。

CSS

.center-vertical { position: relative; top: 50%; transform:
translateY(-50%); }

1
2
3
4
5
.center-vertical {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
}

相比较而言,水平居中要不难得多,像下面提到的text-align:center,平常应用的技巧还有
margin:0 auto 。但对于margin大法也只在子元素宽度小于容器宽度时管用,当子元素宽度当先容器宽度时此法失效。

东施效颦,利用left和transform同样可完结程度居中,可是意义不大,毕竟text-align和margin大致满意需要了。

CSS

.center-horizontal { position: relative; left: 50%; transform:
translateX(-50%); }

1
2
3
4
5
.center-horizontal {
    position: relative;
    left: 50%;
    transform: translateX(-50%);
}

 

抑或浏览器地址栏上做作品,将以下代码贴到地址栏运行后浏览器变成了一个土生土长而精炼的编辑器,与Windows自带的notepad一样,吼吼。

Hello,world!

亚洲必赢官网 10

您造么,可以把浏览器当编辑器

或者浏览器地址栏上做文章,将以下代码贴到地址栏运行后浏览器变成了一个本来而简易的编辑器,与Windows自带的notepad一样,吼吼。

data:text/html,

亚洲必赢官网 11

总归多亏了HTML5中新加的 contenteditable
属性,当元素指定了该属性后,元素的始末成为可编制状态。

扩大,将以下代码放到console执行后,整个页面将变得可编制,随意践踏吧~

document.body.contentEditable=’true’;

亚洲必赢官网 12

行使a标签自动解析URL

重重时候我们有从一个URL中提取域名,查询关键字,变量参数值等的内需,而相对没悟出可以让浏览器方便地帮大家达成这一任务而不用大家写正则去抓取。方法就在JS代码里先创建一个
a 标签然后将须求分析的URL赋值给 a 的 href
属性,然后就收获了总体大家想要的了。

vara=document.createElement(‘a’);

a.href=”;

console.log(a.host);

亚洲必赢官网 13

运用这一原理,稍微增加一下,就赢得了一个更是健康的解析URL各部分的通用方法了。下边代码来自詹姆斯的博客。

functionparseURL(url){

vara=document.createElement(‘a’);

a.href=url;

return{

source:url,

protocol:a.protocol.replace(‘:’,”),

host:a.hostname,

port:a.port,

query:a.search,

params:(function(){

varret={},

seg=a.search.replace(/^\?/,”).split(‘&’),

len=seg.length,i=0,s;

for(;i

if(!seg[i]){continue;}

s=seg[i].split(‘=’);

ret[s[0]]=s[1];

}

returnret;

})(),

file:(a.pathname.match(/\/([^\/?#]+)$/i)||[,”])[1],

hash:a.hash.replace(‘#’,”),

path:a.pathname.replace(/^([^\/])/,’/$1′),

relative:(a.href.match(/tps?:\/\/[^\/]+(.+)/)||[,”])[1],

segments:a.pathname.replace(/^\//,”).split(‘/’)

};

}

页面拥有ID的要素会创建全局变量

在一张HTML页面中,所有安装了ID属性的因素会在JavaScript的实施环境中开创对应的全局变量,那意味
document.getElementById
像人的阑尾一样显得多余了。但其实项目中最好规矩该怎么写就怎么写,毕竟常规代码出乱子的空子要小得多。

console.log(sample);

亚洲必赢官网 14

加载CDN文件时,可以节约HTTP标识

现行很盛行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全着想部分CDN服务器使用HTTPS方式连接,而众多传统的HTTP,其实大家在运用时方可忽略掉那一个,将它从URL中节约。

这点在事先一篇译文博客《jQuery编程最佳实践》中也有涉嫌。

采取script标签保存任意音讯

将script标签设置为 type=’text’
然后可以在其间保存任意音讯,之后方可在JavaScript代码中很便利地得到。

说到底多亏了HTML5中新加的contenteditable属性,当元素指定了该属性后,元素的内容成为可编制状态。
伸张,将以下代码放到console执行后,整个页面将变得可编制,随意践踏吧~

多重边框

运用再度指定box-shadow来达到多少个边框的成效

在线演示

CSS

/*CSS Border with Box-Shadow Example*/ div { box-shadow: 0 0 0 6px
rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 18px rgba(0, 0,
0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2); height: 200px; margin: 50px
auto; width: 400px }

1
2
3
4
5
6
7
/*CSS Border with Box-Shadow Example*/
div {
    box-shadow: 0 0 0 6px rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 18px rgba(0, 0, 0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2);
    height: 200px;
    margin: 50px auto;
    width: 400px
}

亚洲必赢官网 15

data:text/html, <html contenteditable>

Thiswon’tdisplay

vartext=document.getElementById(‘template’).innerHTML

CSS篇

至于CSS的揶揄

相信您看完以下代码后可以预料到会出现什么效果。

*{

cursor:none!important;

}

亚洲必赢官网 16

简单的文字模糊效果

以下两行简单的CSS3代码可直达将文字模糊化处理的目的,出来的效能有点像使用PS的滤镜,so
cool!

p{

color:transparent;

text-shadow:#111005px;

}

亚洲必赢官网 17

笔直居中

有好多次博主都有那般的须求,垂直居中突显某个DIV,咱们知晓CSS中天然有品位居中的样式
text-align:center 。唯独那些垂直居中无解。

当然你可以将容器设置为 display:table
,然后将子元素也就是要笔直居中显得的要素设置为 display:table-cell
,然后加上来促成,但此种完毕多次会因为 display:table
而损坏全体布局,那还不如直接用table标签了吧。

上面这一个样式利用了translate来都行完成了僵直居中样式,需IE9+。

.center-vertical{

position:relative;

top:50%;

transform:translateY(-50%);

}

相比较而言,水平居中要简明得多,像下面提到的text-align:center,日常拔取的技艺还有
margin:0 auto
。但对于margin大法也只在子元素宽度小于容器宽度时管用,当子元素宽度大于容器宽度时此法失效。

上行下效,利用left和transform同样可完结程度居中,不过意义不大,毕竟text-align和margin差不离满意要求了。

.center-horizontal{

position:relative;

left:50%;

transform:translateX(-50%);

}

多重边框

拔取再一次指定box-shadow来已毕几个边框的功力

在线演示:

/*CSS Border with Box-Shadow Example*/

div{

box-shadow:0006pxrgba(0,0,0,0.2),00012pxrgba(0,0,0,0.2),00018pxrgba(0,0,0,0.2),00024pxrgba(0,0,0,0.2);

height:200px;

margin:50pxauto;

width:400px

}

亚洲必赢官网 18

实时编辑CSS

经过设置style标签的 display:block
样式可以让页面的style标签突显出来,并且增加 contentEditable
属性后可以让体制成为可编制状态,更改后的样式效果也是实时更新显示的。此技能在IE下无效。拥有此技能者,逆天也!

body{color:blue}

亚洲必赢官网 19

创制长宽比固定的因素

经过设置父级窗口的 padding-bottom
可以达标让容器保持自然的尺寸比的目标,那在响应式页面设计中相比有用,可以保证元素不变形。

thiscontentwillhaveaconstantaspectratiothatvariesbasedonthewidth.

亚洲必赢官网 20

CSS中也得以做简单运算

经过CSS中的calc方法可以开展局地简单的运算,从而达到动态指定元素样式的目标。

.container{

background-position:calc(100%-50px)calc(100%-20px);

}

JavaScript篇

变更随机字符串

使用 Math.random 和 toString
生成自由字符串,来自前一阵子看到的一篇博文。那里的技能是拔取了 toString
方法可以吸收一个基数作为参数的原理,那几个基数从2到36封顶。假诺不点名,默认基数是10进制。略屌!

functiongenerateRandomAlphaNum(len){

varrdmString=””;

for(;rdmString.length

returnrdmString.substr(0,len);

}

亚洲必赢官网 21

平头的操作

JavaScript中是未曾整型概念的,但拔取好位操作符可以轻松处理,同时获取成效上的升官。

|0 和 ~~
是很好的一个例证,使用那五头可以将浮点转成整型且成效方面要比同类的
parseInt , Math.round
要快。在拍卖像素及动画位移等作用的时候会很有用。质量比较见此。

varfoo=(12.4/4.13)|0;//结果为3

varbar=~~(12.4/4.13);//结果为3

附带说句, !! 将一个值方便快捷转化为布尔值 !!window===true 。

重写原生浏览器方法以贯彻新效用

下载的代码通过重写浏览器的 alert 让它可以记下弹窗的次数。

(function(){

varoldAlert=window.alert,

count=0;

window.alert=function(a){

count++;

oldAlert(a+”\n You’ve called alert “+count+” times now. Stop, it’s
evil!”);

};

})();

alert(“Hello World”);

至于console的嘲讽

有关重写原生方法,那里有个恶作剧大家可以拿去寻高兴。Chrome的 console.log
是永葆对文字添加样式的,甚至log图片都得以。于是可以重写掉默许的log方法,把将要log的文字应用到CSS的歪曲效果,这样当有人总计调用console.log()的时候,出来的是模糊不清的文字。好冷,我表示从未笑。

是从那篇G+帖子的评论里看到的。使用以后的功力是重复调用log会输出字迹模糊不清的文字。

var_log=console.log;

console.log=function(){

_log.call(console,’%c’+[].slice.call(arguments).join(‘
‘),’color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);’);

};

亚洲必赢官网 22

不申明第多少个变量的值沟通

大家都知晓调换多个变量值的健康做法,那就是声称一个中级变量来暂存。但鲜有人去挑衅不申明中间变量的情景,上面的代码给出了那种完结。蛮有创意
的。

vara=1,b=2;a=[b,b=a][0];

万物皆对象

在JavaScript的社会风气,万物皆对象。除了 null 和 undefined
,其余基本项目数字,字符串和布尔值都有对应该包装对象。对象的一个风味是你能够在它身上平昔调用方法。对于数字为主类型,当试图在其随身调用
toString
方法会败北,但用括号括起来后再调用就不会破产了,内部贯彻是用相应的卷入对象将基本项目转为对象。所以
(1).toString() 相当于 new Number(1).toString()
。由此,你真的可以把基本项目数字,字符串,布尔等当对象使用的,只是专注语法要适合。

与此同时大家注意到,JavaScript中数字是不分浮点和整形的,所有数字其实均是浮点类型,只是把小数点不难了而以,比如您看看的1可以写成1.,那也就是怎么当您准备1.toString()时会报错,所以正确的写法应该是如此:1..toString(),或者如上面所述加上括号,那里括号的成效是修正JS解析器,不要把1后面的点当成小数点。内部贯彻如下面所述,是将1.用包装对象转成对象再调用方法。

If语句的变形

当您须求写一个if语句的时候,不妨尝试另一种更简便的法门,用JavaScript中的逻辑操作符来顶替。

varday=(newDate).getDay()===0;

//传统if语句

if(day){

alert(‘Today is Sunday!’);

};

//运用逻辑与代表if

day&&alert(‘Today is Sunday!’);

诸如上边的代码,首先得到前些天的日期,如若是周末,则弹窗,否则怎样也不做。大家清楚逻辑操作存在鸿沟的场馆,对于逻辑与表明式,唯有两者都真才结果才为真,固然前方的day变量被判定为假了,那么对于一切与表明式来说结果就是假,所以就不会再而三去执行前边的
alert
了,若是面前day为真,则还要继续执行前边的代码来规定整个表明式的真伪。利用这一点完成了if的功能。

对于价值观的if语句,假诺推行体代码当先了1
条语句,则需求加花括号,而选择逗号表明式,可以执行任意条代码而不用加花括号。

if(conditoin)alert(1),alert(2),console.log(3);

地点if语句中,倘诺条件建立则实施四个操作,但我们不供给用花括号将那三句代码括起来。当然,那是不引进的,那里是冷知识课堂:)

禁绝外人以iframe加载你的页面

上面的代码已经不言自明了,没什么好多说的。

if(window.location!=window.parent.location)window.parent.location=window.location;

console.table

Chrome专属,IE绕道的 console
方法。可以将JavaScript关联数组以表格格局出口到浏览器 console
,效果很惊赞,界面很顺眼。

//采购意况

vardata=[{‘品名’:’杜雷斯’,’数量’:4},{‘品名’:’冈本’,’数量’:3}];

console.table(data);

亚洲必赢官网 23

REFERENCE

亚洲必赢官网 ,What are the most interesting HTML/JS/DOM/CSS hacks that most web
developers don’t know about?

45 Useful JavaScript Tips, Tricks and Best Practices

10 Small Things You May Not Know About Javascript

document.body.contentEditable='true';

实时编辑CSS

因而设置style标签的 display:block 样式可以让页面的style标签呈现出来,并且增长contentEditable 属性后方可让体制成为可编制状态,更改后的体裁效果也是实时更新突显的。此技能在IE下无效。拥有此技能者,逆天也!

<!DOCTYPE html> <html> <body> <style
style=”display:block” contentEditable> body { color: blue }
</style> </body> </html>

1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
    <body>
        <style style="display:block" contentEditable>
         body { color: blue }
        </style>
    </body>
</html>

亚洲必赢官网 24

说到底多亏了HTML5中新加的 contenteditable
属性,当元素指定了该属性后,元素的内容成为可编制状态。

亚洲必赢官网 25

创办长宽比固定的因素

透过安装父级窗口的 padding-bottom 可以达标让容器保持一定的尺寸比的目的,那在响应式页面设计中相比较有用,可以保持元素不变形。

<div style=”width: 100%; position: relative; padding-bottom:
20%;”> <div style=”position: absolute; left: 0; top: 0; right: 0;
bottom: 0;background-color:yellow;”> this content will have a
constant aspect ratio that varies based on the width. </div>
</div>

1
2
3
4
5
<div style="width: 100%; position: relative; padding-bottom: 20%;">
    <div style="position: absolute; left: 0; top: 0; right: 0; bottom: 0;background-color:yellow;">
        this content will have a constant aspect ratio that varies based on the width.
    </div>
</div>

亚洲必赢官网 26

恢宏,将以下代码放到console执行后,整个页面将变得可编制,随意践踏吧~

选用a标签自动解析URL
有的是时候大家有从一个URL中领取域名,查询关键字,变量参数值等的急需,而相对没悟出可以让浏览器方便地帮大家做到这一职务而不用我们写正则去抓取。方法就在JS代码里先创立一个a标签然后将急需分析的URL赋值给a的href属性,然后就拿走了所有大家想要的了。

CSS中也可以做简单运算

经过CSS中的calc方法能够开展部分简单的运算,从而达到动态指定元素样式的目标。

CSS

.container{ background-position: calc(100% – 50px) calc(100% – 20px); }

1
2
3
.container{
background-position: calc(100% – 50px) calc(100% – 20px);
}

 

document.body.contentEditable=’true’;

var a = document.createElement('a'); a.href = 'http://www.cnblogs.com/wayou/p/'; console.log(a.host);

JavaScript篇

行使a标签自动解析URL

亚洲必赢官网 27

扭转随机字符串

使用 Math.random 和 toString 生成自由字符串,来自前一阵子看到的一篇博文。那里的技能是选择了
toString 方法可以接受一个基数作为参数的法则,那么些基数从2到36封顶。若是不指定,默许基数是10进制。略屌!

JavaScript

function generateRandomAlphaNum(len) { var rdmString = “”; for (;
rdmString.length < len; rdmString +=
Math.random().toString(36).substr(2)); return rdmString.substr(0, len);
}

1
2
3
4
5
function generateRandomAlphaNum(len) {
    var rdmString = "";
    for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
    return rdmString.substr(0, len);
}

亚洲必赢官网 28

不少时候我们有从一个URL中领取域名,查询关键字,变量参数值等的急需,而相对没悟出可以让浏览器方便地帮大家做到这一职责而不用大家写正则去抓取。方法就在JS代码里先创设一个
a 标签然后将索要分析的URL赋值给 a 的 href
属性,然后就赢得了全副大家想要的了。

使用这一法则,稍微扩充一下,就得到了一个一发强壮的解析URL各部分的通用方法了。上面代码来自James的博客。

平头的操作

JavaScript中是平素不整型概念的,但运用好位操作符可以轻松处理,同时取得功效上的升级。

|0 和 ~~ 是很好的一个例子,使用那两边可以将浮点转成整型且功能方面要比同类的
parseInt , Math.round 
要快。在拍卖像素及动画位移等功效的时候会很有用。性能比较见此。

JavaScript

var foo = (12.4 / 4.13) | 0;//结果为3 var bar = ~~(12.4 /
4.13);//结果为3

1
2
var foo = (12.4 / 4.13) | 0;//结果为3
var bar = ~~(12.4 / 4.13);//结果为3

顺便说句, !! 将一个值方便高效转化为布尔值
!!window===true  。

var a = document.createElement(‘a’);
a.href = ”;
console.log(a.host);

function parseURL(url) { var a = document.createElement('a'); a.href = url; return { source: url, protocol: a.protocol.replace(':',''), host: a.hostname, port: a.port, query: a.search, params: (function(){ var ret = {}, seg = a.search.replace(/^\?/,'').split('&'), len = seg.length, i = 0, s; for (;i<len;i++) { if (!seg[i]) { continue; } s = seg[i].split('='); ret[s[0]] = s[1]; } return ret; })(), file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1], hash: a.hash.replace('#',''), path: a.pathname.replace(/^([^\/])/,'/$1'), relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1], segments: a.pathname.replace(/^\//,'').split('/') };}

重写原生浏览器方法以落到实处新功效

下载的代码通过重写浏览器的 alert 让它可以记下弹窗的次数。

JavaScript

(function() { var oldAlert = window.alert, count = 0; window.alert =
function(a) { count++; oldAlert(a + “\n You’ve called alert ” + count +
” times now. Stop, it’s evil!”); }; })(); alert(“Hello World”);

1
2
3
4
5
6
7
8
9
(function() {
    var oldAlert = window.alert,
        count = 0;
    window.alert = function(a) {
        count++;
        oldAlert(a + "\n You’ve called alert " + count + " times now. Stop, it’s evil!");
    };
})();
alert("Hello World");

 

运用这一原理,稍微扩充一下,就得到了一个更是健康的解析URL各部分的通用方法了。上边代码来自James的博客。

页面拥有ID的要素会创设全局变量

至于console的恶作剧

有关重写原生方法,那里有个恶作剧我们可以拿去寻手舞足蹈。Chrome的 console.log 是扶助对文字添加样式的,甚至log图片都得以。于是可以重写掉默许的log方法,把将要log的文字应用到CSS的混淆效果,这样当有人准备调用console.log()的时候,出来的是歪曲不清的文字。好冷,我表示从没笑。

是从这篇G+帖子的评论里看看的。使用之后的效应是再度调用log会输出字迹模糊不清的文字。

JavaScript

var _log = console.log; console.log = function() { _log.call(console,
‘%c’ + [].slice.call(arguments).join(‘ ‘),
‘color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);’); };

1
2
3
4
var _log = console.log;
console.log = function() {
  _log.call(console, ‘%c’ + [].slice.call(arguments).join(‘ ‘), ‘color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);’);
};

亚洲必赢官网 29

function parseURL(url) {
var a =  document.createElement(‘a’);
a.href = url;
return {
     source: url,
     protocol: a.protocol.replace(‘:’,”),
     host: a.hostname,
     port: a.port,
     query: a.search,
     params: (function(){
         var ret = {},
           seg = a.search.replace(/^\?/,”).split(‘&’),
           len = seg.length, i = 0, s;
         for (;i<len;i++) {
             if (!seg[i]) { continue; }
             s = seg[i].split(‘=’);
             ret[s[0]] = s[1];
         }
         return ret;
     })(),
     file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,”])[1],
     hash: a.hash.replace(‘#’,”),
     path: a.pathname.replace(/^([^\/])/,’/$1′),
     relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) ||
[,”])[1],
     segments: a.pathname.replace(/^\//,”).split(‘/’)
};
}

在一张HTML页面中,所有安装了ID属性的元素会在JavaScript的执行环境中创建对应的全局变量,那意味着document.getElementById像人的阑尾一样显得多余了。但实际上项目中最好规矩该怎么写就怎么写,毕竟常规代码出乱子的机遇要小得多。
<div id=”sample”></div><script type=”text/javascript”>
console.log(sample);</script>

不注脚第多个变量的值调换

大家都知晓沟通多个变量值的健康做法,那就是声称一个中级变量来暂存。但鲜有人去挑衅不注解中间变量的动静,上面的代码给出了那种完成。蛮有创意
的。

JavaScript

var a=1,b=2;a=[b,b=a][0];

1
var a=1,b=2;a=[b,b=a][0];

亚洲必赢官网 30

页面拥有ID的要素会创设全局变量

亚洲必赢官网 31

万物皆对象

在JavaScript的世界,万物皆对象。除了 null 和 undefined ,其他基本项目数字,字符串和布尔值都有对应该包装对象。对象的一个特点是您可以在它身上一贯调用方法。对于数字为主项目,当试图在其随身调用
toString 方法会失败,但用括号括起来后再调用就不会失败了,内部贯彻是用相应的包装对象将主导项目转为对象。所以
(1).toString() 约等于 new Number(1).toString() 。因而,你真的可以把主题类型数字,字符串,布尔等当目标使用的,只是专注语法要适宜。

而且大家注意到,JavaScript中数字是不分浮点和整形的,所有数字其实均是浮点类型,只是把小数点简单了而以,比如您看到的1得以写成1.,那也就是为啥当你打算1.toString()时会报错,所以正确的写法应该是那样:1..toString(),或者如上面所述加上括号,那里括号的效果是修正JS解析器,不要把1背后的点当成小数点。内部贯彻如下边所述,是将1.用包装对象转成对象再调用方法。

在一张HTML页面中,所有安装了ID属性的要素会在JavaScript的实践环境中开创对应的全局变量,那意味
document.getElementById
像人的阑尾一样显得多余了。但骨子里项目中最好规矩该怎么写就怎么写,毕竟常规代码出乱子的机遇要小得多。

加载CDN文件时,可以节省HTTP标识

If语句的变形

当你需要写一个if语句的时候,不妨尝试另一种更省事的法子,用JavaScript中的逻辑操作符来替代。

JavaScript

var day=(new Date).getDay()===0; //传统if语句 if (day) { alert(‘Today is
Sunday!’); }; //运用逻辑与代表if day&&alert(‘Today is Sunday!’);

1
2
3
4
5
6
7
var day=(new Date).getDay()===0;
//传统if语句
if (day) {
alert(‘Today is Sunday!’);
};
//运用逻辑与代替if
day&&alert(‘Today is Sunday!’);

例如上面的代码,首先获得明天的日子,借使是周二,则弹窗,否则怎么也不做。大家清楚逻辑操作存在鸿沟的事态,对于逻辑与说明式,唯有两岸都真才结果才为真,若是面前的day变量被判定为假了,那么对于一切与表明式来说结果就是假,所以就不会延续去实施后边的
alert 了,倘若前方day为真,则还要继续执行前面的代码来确定整个表明式的真伪。利用这一点达到了if的职能。

对于传统的if语句,假如推行体代码当先了1
条语句,则须要加花括号,而选择逗号表达式,能够实施任意条代码而不用加花括号。

JavaScript

if(conditoin) alert(1),alert(2),console.log(3);

1
if(conditoin) alert(1),alert(2),console.log(3);

地方if语句中,假如基准建立则举办多少个操作,但大家不要求用花括号将那三句代码括起来。当然,那是不推荐的,那里是冷知识课堂:)

<div id=”sample”></div>
<script type=”text/javascript”>
console.log(sample);
</script>

今日很流行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全着想部分CDN服务器使用HTTPS形式连接,而不少传统的HTTP,其实大家在选取时得以忽略掉这么些,将它从URL中节约。(web前端学习调换群:328058344
禁止闲谈,非喜勿进!)

禁止别人以iframe加载你的页面

上边的代码已经不言自明了,没什么好多说的。

JavaScript

if (window.location != window.parent.location) window.parent.location =
window.location;

1
if (window.location != window.parent.location) window.parent.location = window.location;

加载CDN文件时,可以节省HTTP标识

<script src="//domain.com/path/to/script.js"></script>

console.table

Chrome专属,IE绕道的 console 方法。可以将JavaScript关联数组以表格格局出口到浏览器
console ,效果很惊赞,界面很赏心悦目。

JavaScript

//采购情况 var data = [{‘品名’: ‘杜雷斯’, ‘数量’: 4}, {‘品名’: ‘冈本’,
‘数量’: 3}]; console.table(data);

1
2
3
//采购情况
var data = [{‘品名’: ‘杜雷斯’, ‘数量’: 4}, {‘品名’: ‘冈本’, ‘数量’: 3}];
console.table(data);

亚洲必赢官网 32

前几天很盛行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全着想部分CDN服务器使用HTTPS方式连接,而许多传统的HTTP,其实我们在选用时得以忽略掉那些,将它从URL中节省。

选拔script标签保存任意新闻

REFERENCE

  • What are the most interesting HTML/JS/DOM/CSS hacks that most web
    developers don’t know
    about?
  • 45 Useful JavaScript Tips, Tricks and Best
    Practices
  • 10 Small Things You May Not Know About
    Javascript

    6 赞 43 收藏 13
    评论

<script src=”//domain.com/path/to/script.js”></script>

将script标签设置为type=’text’然后可以在其中保存任意音讯,之后可以在JavaScript代码中很有益于地收获。

有关小编:刘哇勇

亚洲必赢官网 33

放浪不急爱自由
个人主页 ·
我的小说 ·
17 ·
  

亚洲必赢官网 34

这点在头里一篇译文博客《jQuery编程最佳实践》中也有涉及。

<script type="text" id="template"> <h1>This won't display</h1></script>

var text = document.getElementById('template').innerHTML

使用script标签保存任意信息

CSS篇

将script标签设置为 type=’text’
然后方可在里面保存任意音信,之后可以在JavaScript代码中很有利地取得。

至于CSS的嘲谑
信任你看完以下代码后能够预料到会出现什么样意义。
*{ cursor: none!important;}

<script type=”text” id=”template”>
<h1>This won’t display</h1>
</script>

亚洲必赢官网 35

var text = document.getElementById(‘template’).innerHTML

粗略的文字模糊效果

CSS篇

以下两行不难的CSS3代码可高达将文字模糊化处理的目标,出来的机能有点像使用PS的滤镜,so
cool!
p { color: transparent; text-shadow: #111 0 0 5px;}

关于CSS的嘲谑

亚洲必赢官网 36

相信你看完以下代码后可以预料到会出现哪些功效。

笔直居中

*{
cursor: none!important;
}

有好很多次博主都有那般的急需,垂直居中突显某个DIV,我们明白CSS中自然有程度居中的样式text-align:center。唯独那几个垂直居中无解。
理所当然你能够将容器设置为display:table,然后将子元素也就是要笔直居中显得的要素设置为display:table-cell,然后加上vertical-align:middle来贯彻,但此种完毕数次会因为display:table而破坏全部布局,那还不如直接用table标签了吧。
上边那么些样式利用了translate来都行完结了僵直居中样式,需IE9+。

简短的文字模糊效果

.center-vertical { position: relative; top: 50%; transform: translateY(-50%);}

以下两行简单的CSS3代码可达到将文字模糊化处理的目标,出来的功效有点像使用PS的滤镜,so
cool!

比较而言,水平居中要不难得多,像上边提到的text-align:center,日常采用的技艺还有margin:0
auto。但对于margin大法也只在子元素宽度小于容器宽度时管用,当子元素宽度大于容器宽度时此法失效。
萧规曹随,利用left和transform同样可达成程度居中,但是意义不大,毕竟text-align和margin大概满意要求了。

p {
color: transparent;
text-shadow: #111 0 0 5px;
}

.center-horizontal { position: relative; left: 50%; transform: translateX(-50%); }

垂直居中

多重边框

有好很多次博主都有如此的急需,垂直居中展现某个DIV,大家掌握CSS中自然有程度居中的样式
text-align:center 。唯独这么些垂直居中无解。

使用再度指定box-shadow来达成多少个边框的效率
在线演示

本来你可以将容器设置为 display:table
,然后将子元素也就是要笔直居中展现的因素设置为 display:table-cell
,然后加上来贯彻,但此种完毕很多次会因为 display:table
而破坏全部布局,那还不如直接用table标签了吗。

/*CSS Border with Box-Shadow Example*/div { box-shadow: 0 0 0 6px rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 18px rgba(0, 0, 0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2); height: 200px; margin: 50px auto; width: 400px}

上边这几个样式利用了translate来都行已毕了垂直居中样式,需IE9+。

亚洲必赢官网 37

.center-vertical {
position: relative;
top: 50%;
transform: translateY(-50%);
}

实时编辑CSS

相比较而言,水平居中要简单得多,像下面提到的text-align:center,寻常采纳的技艺还有
margin:0 auto
。但对于margin大法也只在子元素宽度小于容器宽度时管用,当子元素宽度大于容器宽度时此法失效。

透过设置style标签的display:block样式可以让页面的style标签突显出来,并且增加contentEditable属性后得以让体制成为可编制状态,更改后的体制效果也是实时更新显示的。此技能在IE下无效。拥有此技能者,逆天也!

上行下效,利用left和transform同样可完成程度居中,可是意义不大,毕竟text-align和margin大约知足须要了。

<!DOCTYPE html><html> <body> <style style="display:block" contentEditable> body { color: blue } </style> </body></html>

.center-horizontal {
position: relative;
left: 50%;
transform: translateX(-50%);
}

亚洲必赢官网 38

多重边框

创建长宽比固定的要素

选拔再度指定box-shadow来达成七个边框的机能

透过安装父级窗口的padding-bottom能够高达让容器保持一定的长短比的目标,那在响应式页面设计中比较有用,可以保持元素不变形。

在线演示:

<div style="width: 100%; position: relative; padding-bottom: 20%;"> <div style="position: absolute; left: 0; top: 0; right: 0; bottom: 0;background-color:yellow;"> this content will have a constant aspect ratio that varies based on the width. </div></div>

div {
box-shadow: 0 0 0 6px rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2),
0 0 0 18px rgba(0, 0, 0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2);
height: 200px;
margin: 50px auto;
width: 400px
}

亚洲必赢官网 39

实时编辑CSS

CSS中也可以做简单运算

因而安装style标签的 display:block
样式可以让页面的style标签显示出来,并且增加 contentEditable
属性后得以让体制成为可编制状态,更改后的体制效果也是实时更新突显的。此技术在IE下无效。拥有此技能者,逆天也!

通过CSS中的calc方法可以开展一些粗略的演算,从而达到动态指定元素样式的目标。
.container{ background-position: calc(100% - 50px) calc(100% - 20px);}

<!DOCTYPE html>
<html>
<body>
    <style style=”display:block” contentEditable>
      body { color: blue }
    </style>
</body>
</html>

JavaScript篇

创造长宽比固定的因素

扭转随机字符串
使用Math.random和toString生成随机字符串,来自前一阵子看到的一篇博文。那里的技术是行使了toString方法可以采纳一个基数作为参数的规律,那几个基数从2到36封顶。若是不指定,默许基数是10进制。略屌!
function generateRandomAlphaNum(len) { var rdmString = ""; for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2)); return rdmString.substr(0, len);}

由此设置父级窗口的 padding-bottom
可以直达让容器保持自然的尺寸比的目标,那在响应式页面设计中相比有用,可以有限支撑元素不变形。

亚洲必赢官网 40

<div style=”width: 100%; position: relative; padding-bottom:
20%;”>
<div style=”position: absolute; left: 0; top: 0; right: 0; bottom:
0;”>
     this content will have a constant aspect ratio that varies based on
the width.
</div>
</div>

平头的操作
JavaScript中是从未整型概念的,但使用好位操作符可以轻松处理,同时获得功用上的升高。
|0和~~是很好的一个例子,使用那两边能够将浮点转成整型且成效方面要比同类的parseInt,Math.round
要快。在处理像素及动画位移等功效的时候会很有用。性能相比较见此。

CSS中也得以做不难运算

var foo = (12.4 / 4.13) | 0;//结果为3var bar = ~~(12.4 / 4.13);//结果为3

透过CSS中的calc方法可以展开一些大致的演算,从而达成动态指定元素样式的目标。

附带说句,!!将一个值方便高效转化为布尔值 !!window===true 。

.container{
background-position: calc(100% – 50px) calc(100% – 20px);
}

重写原生浏览器方法以落实新功能
下载的代码通过重写浏览器的alert让它能够记录弹窗的次数。

JavaScript篇

(function() { var oldAlert = window.alert, count = 0; window.alert = function(a) { count++; oldAlert(a + "\n You've called alert " + count + " times now. Stop, it's evil!"); };})();alert("Hello World");

变化随机字符串

有关console的调戏

行使 Math.random 和 toString
生成自由字符串,来自前一阵子看到的一篇博文。那里的技艺是使用了 toString
方法可以接到一个基数作为参数的原理,这么些基数从2到36封顶。要是不指定,默许基数是10进制。略屌!

关于重写原生方法,那里有个恶作剧我们可以拿去寻心潮澎湃。Chrome的console.log是永葆对文字添加样式的,甚至log图片都可以。于是可以重写掉默许的log方法,把将要log的文字应用到CSS的歪曲效果,这样当有人统计调用console.log()的时候,出来的是歪曲不清的文字。好冷,我表示从没笑。
是从这篇G+帖子的褒贬里看看的。使用将来的效益是重复调用log会输出字迹模糊不清的文字。(web前端学习互换群:328058344
禁止闲聊,非喜勿进!)

function generateRandomAlphaNum(len) {
var rdmString = “”;
for (; rdmString.length < len; rdmString +=
Math.random().toString(36).substr(2));
return rdmString.substr(0, len);
}

var _log = console.log;console.log = function() { _log.call(console, '%c' + [].slice.call(arguments).join(' '), 'color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);');};

平头的操作

亚洲必赢官网 41

JavaScript中是从未整型概念的,但运用好位操作符可以轻松处理,同时取得功效上的升级。

不申明第七个变量的值交流
俺们都精晓调换七个变量值的健康做法,那就是宣称一个中档变量来暂存。但鲜有人去挑衅不注脚中间变量的情事,下边的代码给出了那种达成。蛮有新意
的。
var a=1,b=2;a=[b,b=a][0];

|0 和 ~~
是很好的一个例证,使用那两者能够将浮点转成整型且功用方面要比同类的
parseInt ,
Math.round  要快。在拍卖像素及动画位移等效果的时候会很有用。品质比较见此。

亚洲必赢官网 42

var foo = (12.4 / 4.13) | 0;//结果为3
var bar = ~~(12.4 / 4.13);//结果为3

万物皆对象

顺便说句, !! 将一个值方便快速转化为布尔值 !!window===true  。

在JavaScript的世界,万物皆对象。除了null和undefined,其余大旨项目数字,字符串和布尔值都有对相应包装对象。对象的一个特色是您可以在它身上一向调用方法。对于数字为主项目,当试图在其身上调用toString方法会失利,但用括号括起来后再调用就不会破产了,内部贯彻是用相应的卷入对象将主旨类型转为对象。所以(1).toString()相当于new
Number(1).toString()。因而,你实在可以把基本项目数字,字符串,布尔等当对象使用的,只是小心语法要适度。

重写原生浏览器方法以促成新功用

而且我们注意到,JavaScript中数字是不分浮点和整形的,所有数字其实均是浮点类型,只是把小数点简单了而以,比如你看到的1得以写成1.,那也就是怎么当你打算1.toString()时会报错,所以正确的写法应该是那样:1..toString(),或者如上边所述加上括号,那里括号的作用是改正JS解析器,不要把1背后的点当成小数点。内部贯彻如上面所述,是将1.用包装对象转成对象再调用方法。

下载的代码通过重写浏览器的 alert 让它可以记录弹窗的次数。

If语句的变形

(function() {
var oldAlert = window.alert,
      count = 0;
window.alert = function(a) {
     count++;
     oldAlert(a + “\n You’ve called alert ” + count + ” times now.
Stop, it’s evil!”);
};
})();
alert(“Hello World”);

当你要求写一个if语句的时候,不妨尝试另一种更简便的不二法门,用JavaScript中的逻辑操作符来顶替。
var day=(new Date).getDay()===0;//传统if语句if (day) { alert('Today is Sunday!');};//运用逻辑与代替ifday&&alert('Today is Sunday!');

有关console的恶作剧

例如上边的代码,首先得到明日的日子,如若是星期六,则弹窗,否则怎么也不做。大家清楚逻辑操作存在鸿沟的景观,对于逻辑与表达式,唯有两者都真才结果才为真,纵然面前的day变量被判定为假了,那么对于整个与表明式来说结果就是假,所以就不会继续去履行前边的alert了,就算前方day为真,则还要继续执行后边的代码来确定整个表达式的真伪。利用那一点达到了if的作用。

至于重写原生方法,那里有个恶作剧我们可以拿去寻欣然自得。Chrome的 console.log
是支撑对文字添加样式的,甚至log图片都足以。于是可以重写掉默许的log方法,把将要log的文字应用到CSS的混淆效果,那样当有人准备调用console.log()的时候,出来的是张冠李戴不清的文字。好冷,我表示没有笑。

对于价值观的if语句,如果实施体代码超越了1
条语句,则须求加花括号,而选拔逗号表明式,可以实施任意条代码而不用加花括号。
if(conditoin) alert(1),alert(2),console.log(3);

是从那篇G+帖子的评介里看看的。使用之后的效益是再度调用log会输出字迹模糊不清的文字。

上边if语句中,如果条件建立则履行多少个操作,但我们不须要用花括号将那三句代码括起来。当然,那是不引进的,那里是冷知识课堂:)

var _log = console.log;
console.log = function() {
_log.call(console, ‘%c’ + [].slice.call(arguments).join(‘ ‘),
‘color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);’);
};

取缔别人以iframe加载你的页面
下边的代码已经不言自明了,没什么好多说的。
if (window.location != window.parent.location) window.parent.location = window.location;

不表明第多个变量的值互换

console.table
Chrome专属,IE绕道的console方法。可以将JavaScript关联数组以表格格局出口到浏览器console,效果很惊赞,界面很雅观。
//采购处境var data = [{‘品名’: ‘杜雷斯’, ‘数量’: 4}, {‘品名’: ‘冈本’,
‘数量’: 3}];console.table(data);

大家都了然交流两个变量值的正规做法,那就是宣称一个中路变量来暂存。但鲜有人去挑衅不表明中间变量的意况,上边的代码给出了那种落成。蛮有创意
的。

亚洲必赢官网 43

var a=1,b=2;a=[b,b=a][0];

REFERENCE

万物皆对象

  • What are the most interesting HTML/JS/DOM/CSS hacks that most web
    developers don’t know
    about?
  • 45 Useful JavaScript Tips, Tricks and Best
    Practices
  • 10 Small Things You May Not Know About
    Javascript

在JavaScript的世界,万物皆对象。除了 null 和 undefined
,其余中央项目数字,字符串和布尔值都有对应当包装对象。对象的一个风味是你可以在它身上平素调用方法。对于数字为主类型,当试图在其身上调用
toString
方法会退步,但用括号括起来后再调用就不会战败了,内部贯彻是用相应的包裹对象将基本项目转为对象。所以
(1).toString() 相当于 new Number(1).toString()
。由此,你真的可以把中心类型数字,字符串,布尔等当目的使用的,只是专注语法要相宜。

Feel free to repost but keep the link to this page please!

再就是大家注意到,JavaScript中数字是不分浮点和整形的,所有数字其实均是浮点类型,只是把小数点简单了而以,比如你见到的1可以写成1.,那也就是干吗当您准备1.toString()时会报错,所以正确的写法应该是这般:1..toString(),或者如上面所述加上括号,那里括号的效益是改进JS解析器,不要把1后头的点当成小数点。内部贯彻如下边所述,是将1.用包装对象转成对象再调用方法。

If语句的变形

当你须要写一个if语句的时候,不妨尝试另一种更便捷的章程,用JavaScript中的逻辑操作符来代表。

var day=(new Date).getDay()===0;
//传统if语句
if (day) {
alert(‘Today is Sunday!’);
};
//运用逻辑与代表if
day&&alert(‘Today is Sunday!’);

比如说上边的代码,首先得到明天的日子,若是是周末,则弹窗,否则怎么也不做。大家清楚逻辑操作存在鸿沟的情事,对于逻辑与表明式,只有两者都真才结果才为真,如若面前的day变量被判定为假了,那么对于一切与表达式来说结果就是假,所以就不会三番五次去实施前面的
alert
了,若是前方day为真,则还要继续执行前面的代码来确定整个表明式的真真假假。利用那一点达到了if的效果。

对此传统的if语句,即使实施体代码超越了1
条语句,则须要加花括号,而选用逗号表达式,可以举行任意条代码而不用加花括号。

if(conditoin) alert(1),alert(2),console.log(3);

上边if语句中,假若基准建立则履行多个操作,但大家不要求用花括号将那三句代码括起来。当然,那是不引进的,那里是冷知识课堂:)

取缔别人以iframe加载你的页面

下边的代码已经不言自明了,没什么好多说的。

if (window.location != window.parent.location) window.parent.location =
window.location;

console.table

Chrome专属,IE绕道的 console
方法。可以将JavaScript关联数组以表格格局出口到浏览器 console
,效果很惊赞,界面很精粹。

//采购情形
var data = [{‘品名’: ‘杜雷斯’, ‘数量’: 4}, {‘品名’: ‘冈本’, ‘数量’:
3}];
console.table(data);

网站地图xml地图