有意思的JavaScript代码(装X神器)之上篇
1.高逼格骂人sb
(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
轻松骂人sb2.如何证明自己牛逼?
([][[]]+[])[+!![]]+([]+{})[!+[]+!![]]
nb3.不明觉厉的一行代码,选中当前页面所有元素,并随机加上“outline”属性
不明觉厉的一行代码Array.prototype.forEach.call(document.querySelectorAll('*'),dom => dom.style.outline = `1px solid #${parseInt(Math.random() * Math.pow(2,24)).toString(16)}`)
4.优雅的创建随机字符
Math.random().toString(14).substring(2)
http://www.runoob.com/jsref/jsref-tostring-number.html(toString()的用法,参数2,8,10,16为进制,参数为2-36之间的值)
5.十五个匿名函数自执行函数写法
(function(){ alert("1-(())") }());
[function(){ alert("2-[]()") }()];
(function(){ alert("3-()()") })() ;
~ function(){ alert("4-~") }();
! function(){ alert("5-!") }();
+ function(){ alert("6-+") }();
- function(){ alert("7--") }();
1,function(){ alert("8-1,") }();
1^function(){ alert("9-1^") }();
1>function(){ alert("10-1>") }();
delete function(){ alert("11-delete") }();
typeof function(){ alert("12-typeof") }();
void function(){ alert("13-void") }();
new function(){ alert('14-new') }
new function(){ alert('15-new()') }();
6.三种优雅的取整方法,正常是去尾取整;
(1)、~~1.8888888888888;
(2)、1.9999999|0
(3)、1.999999999>>0
注:如果1.9999999999999999999999999999999,结果是2,意思是无限接近于2,如下图测试;
7.一行代码搞定星级评定问题
var rate = 0;(定义一个rate变量,rate为几就是几颗星);
"★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);五颗星
"★★★★★★☆☆☆☆☆☆".slice(6 - rate, 12 - rate);六颗星
8.两个整数交换;
(1)正常交换
var a=4,b=20;
a+=b; b=a-b; a-=b;
交换成功;a = 20; b = 4;
(2)C语言异或交换,写法更简洁;
var a=12,b=30;
a^=b; b^=a; a^=b;
交换成功;a = 30; b = 12;
9.不用Number、parseInt和parseFloat和方法把"10"字符串转换成数字
var a="10";
a= +a; typeOf(a); Number;
10.如何优雅的实现金钱格式化:1234567890 --> 1,234,567,890
(1)正则实现
var currency = 1234567890;
var format = currency.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")
alert(format); "1,234,567,890"
(2)非正则的优雅实现
function formatCash(str){
return str.split("").reverse().reduce((prev,next,index) => {
return ((index % 3) ? next : next + ",") + prev;
})
}
console.log(formatCash("1234567890"));
根据此链接整理:http://news.51cto.com/art/201711/557194.htm