博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 骚操作
阅读量:6655 次
发布时间:2019-06-25

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

前言

如有错误,欢迎批评指正!

技术无极限,唯一的限制是你的想象力!

在JavaScript世界中,有些操作会让你无法理解,但是却无比优雅。比如下面这些:

5种方式实现值交换

下面几种方式都行

1. var temp = a; a = b; b = temp; (传统,但需要借助临时变量)2. a ^= b; b ^= a; a ^= b; (需要两个整数)3. b = [a, a = b][0] (借助数组)4. [a, b] = [b, a]; (ES6,解构赋值)5. a = a + b; b = a - b; a = a - b; (小学奥赛题)复制代码

去掉小数部分

下面几种方式都行

parseInt(num)~~numnum >> 0num | 0复制代码

判断 x 是否是整数

下面几种方式都行

function isInt(x) {  return (x ^ 0) === x}// return Math.round(x) === x// return (typeof x === 'number') && (x % 1 === 0)// ES6 -> Number.isInteger()复制代码

递归求阶乘

function factorial(n) {  return (n > 1) ? n * f(n - 1) : n}复制代码

判断符号是否相同

function sameSign(a, b) {  return (a ^ b) >= 0}复制代码

克隆数组

arr.slice(0)复制代码

数组去重

// ES6Array.from(new Set(arr))// ES5arr.filter(function(ele, index, array){    return index===array.indexOf(ele)})复制代码

数组最大值

function maxArr(arr) {  return Math.max.apply(null, arr)}复制代码

数组最小值

function minArr(arr) {  return Math.min.apply(null, arr)}复制代码

随机获取数组的一个成员

function randomOne(arr) {  return arr[Math.floor(Math.random() * arr.length)]}复制代码

产生随机颜色

function getRandomColor() {    return `#${Math.random().toString(16).substr(2, 6)}`}复制代码

随机生成指定长度的字符串

function randomStr(n) {  let standard = 'abcdefghijklmnopqrstuvwxyz9876543210'  let len = standard.length  let result = ''  for (let i = 0; i < n; i++) {    result += standard.charAt(Math.floor(Math.random() * len))  }  return result}复制代码

深拷贝

JSON.parse(JSON.stringify(obj))复制代码

打印出来看看

console.log(([][[]] + [])[+!![]] + ([] + {})[!+[] + !![]])console.log((!(~+[]) + {})[--[~+''][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] * ~+[]])复制代码

美化console

console.info("%c哈哈", "color: #3190e8; font-size: 30px; font-family: sans-serif");复制代码

转载地址:http://bnxto.baihongyu.com/

你可能感兴趣的文章
数据挖掘topic
查看>>
php xdebug 配置
查看>>
runtime的使用
查看>>
iOS开发 BOOL / bool / Boolean / NSCFBoolean
查看>>
js常用数值计算
查看>>
elasticsearch
查看>>
eclipse 插件管理和使用
查看>>
.Net 分布式云平台基础服务建设说明概要
查看>>
读《暗时间》一书,暗时间的8个方面和3种应对方法
查看>>
platform_driver_register( )过程追踪
查看>>
m0n0wall安装配置
查看>>
双向链表
查看>>
js string 验证
查看>>
搭建nfs服务的shell script
查看>>
一生的诠释改变你的一生
查看>>
WebInterface / Storefront访问加速
查看>>
centos6-5安装和配置cobbler-2-6实现自动化无人値守网络批量安装
查看>>
mysql基本命令之增删改查
查看>>
puppet 简单使用
查看>>
Laravel 5.2 教程 - 邮件
查看>>