博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript装逼指南
阅读量:5939 次
发布时间:2019-06-19

本文共 1491 字,大约阅读时间需要 4 分钟。

hot3.png

Boolean

!!'foo'

通过两个取反,可以强制转换为Boolean类型

Number

+'45'+new Date

自动转化为number类型的

IIFE(自动执行函数)

(function(arg) {  // do something})(arg)

Closure(闭包)

var counter = function() {  var count = 0;  return function() {    retrun count++;  }}

好像没什么实用价值,看看下面的代码

var isType = function(type) {  retrun function(obj) {    return toString.call(obj) == '[Object ' + type + ']';    }}

Event

如何写一个计数器呢?

var times = 0;var foo = document.querySelector('.foo');foo.addEventListener('click', function() {  times++;  console.log(times);}, false);

变量times被放在了外面,没封装啊,有命名冲突怎么办?

foo.addEventListener('click', (function() {  var times = 0;  return function() {    times++;    console.log(times);  }})(), false);

通过创建一个闭包,把times封装到里面,然后返回函数,瞬间逼格高了起来!

parseInt

现在摁下F12,在console里复制粘贴这样的代码:

~~3.14159    // => 3~~5.678      // => 5

~是一个叫做按位非的操作,会返回数值的反码。是二进制操作。JavaScript中的number都是double类型的,在位操作的时候要转化成int,两次~就还是原数。

Hex

十六进制操作。其实就是一个Array.prototype.toString(16)的用法,做到随机的话可以这样

(~~(Math.random()*(1<<24))).toString(16)

«

左移操作,这个也是二进制操作。将数值二进制左移,解释上面的1<<24的操作。其实是1左移24位。000000000000000000000001左移24位,变成了1000000000000000000000000

其实还有一种更容易理解的方法来解释

Math.pow(2,24) === (1 << 24)

因为是二进制操作,所以速度是很快的。

BTW

[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)})

翻译成正常语言就是这样的

Array.prototype.forEach.call(document.querySelectorAll('*'),dom => dom.style.outline = `1px solid #${parseInt(Math.random() * Math.pow(2,24)).toString(16)}`)

转载于:https://my.oschina.net/u/2399867/blog/671552

你可能感兴趣的文章
AngularJs 基础(60分钟入门) (转)
查看>>
Codeforces Round #425 (Div. 2) - B
查看>>
Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) - D
查看>>
设计模式之(十八)策略模式Strategy
查看>>
codeforces 707E Garlands (离线、二维树状数组)
查看>>
改进的SQL Express LocalDBB
查看>>
[nodejs] nodejs开发个人博客(七)后台登陆
查看>>
[javaEE] EL表达式获取数据
查看>>
[android] post请求接口demo测试代码
查看>>
关于android中事件传递和分发的一些小理解
查看>>
利用 GNU autotools
查看>>
JavaEE和Tomcat环境
查看>>
mybatis的oracle的in超过1000的写法
查看>>
EF的使用<三>
查看>>
11月28日进度
查看>>
nginx 图片缓存
查看>>
玩转X-CTR100 l STM32F4 l AT24C02 EEPROM存储
查看>>
判断远程文件是否存在
查看>>
MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(1)
查看>>
【转】「UI 测试自动化selenium」汇总
查看>>