复杂又简单JavaScript
来源:寒轩小站 时间:2020-09-18 浏览次数:1772

1.如何装逼用代码骂别人SB

(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]

2.如何用代码优雅的证明自己NB

([][[]]+[])[+!![]]+([]+{})[!+[]+!![]]

3.另外一种undefined

var data = void 0; // undefined

4.论如何优雅的向下取整

var a = ~~2.33
//这种方法还可以将字符串转换成数字类型
var b= 2.33 | 0
var c= 2.33 >> 0

5.如何优雅的实现金钱格式化:1234567890 –> 1,234,567,890

var test1 = '1234567890'
var format = test1.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
console.log(format)
// 1,234,567,890

非正则的优雅实现:

function formatCash(str) {
    return str.split('').reverse().reduce(
        (prev, next, index) => {
            return ((index % 3) ? next : (next + ',')) + prev
         }
    )
}
console.log(formatCash('1234567890'))
// 1,234,567,890

6.打乱一个数字数组的顺序

var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];
numbers = numbers.sort(function(){ return Math.random() - 0.5});
/* 
    the array numbers will be equal for example to 
    [120, 5, 228, -215, 400, 458, -85411, 122205]
*/

7.保留指定位数的小数点

var num = 2.443242342;
num = num.toFixed(4);
// num will be equal to 2.4432

注意, toFixed() 方法返回的是字符串而不是一个数字。

8.有些网站为了不让用户复制,设置了div禁止选择的功能,设置如下属性

unselectable="on" onselectstart="return false;"

具体代码:

<div class="box" unselectable="on" onselectstart="return false;">muzidigbig</div>

9.数字运算符和字符串拼接'+'

当表达式中出现字符串,就是字符串拼接,否则就是数字运算。(通常)

1 + true >= 2;//true1 + 'true' >= '1true';//true

但是,[66] + 10的结果是什么?

[66] + 10;
//'6610'
10 + [66];
//"1066"

从上面可知引用类型会转换为字符串,如:

[{}] + 10;
//"[object Object]10"
({}) + 88;
//"[object Object]88"

10.双~~它代表双非按位取反运算符(字符串类型的纯数字也可),如果你想使用比Math.floor()更快的方法,那就是它了。需要注意,对于正数,它向下取整;对于负数,向上取整;非数字取值为0,它具体的表现形式为:

~~null;
// => 0~~undefined;
// => 0~~Infinity;
// => 0--NaN;
// => 0~~0;
// => 0~~{};
// => 0~~[];
// => 0~~(1/0);
// => 0~~false;
// => 0~~true;
// => 1~~1.9;
// => 1~~-1.9;
// => -1

11.    | 的用法,通常用来取整(字符串类型的纯数字也可)

1.2|0
// 11.8|0
// 1-1.2|0
// -1

12.  >>通常用来取整(字符串类型的纯数字也可)

1.2 >> 0
// 11.8 >> 0
// 1-1.2 >> 0
// -1

13.   >>>通常用来正数取整(字符串类型的纯数字也可)

2.9 >>> 0
// 2