昨天看权威指南的时候看到一个个人觉得很优雅的写法,便想着记录一下(我的梦想就是写一手富有诗意的优雅代码)在Js世界中,有些操作会让你无法理解,但是却无比优雅。如有错误,欢迎批评指正!(看前先点赞,养成好习惯哈哈哈)

1、 判断为空

直白写法

if(a == undefined) a = [];

if(params.success){

params.success(res);

}

复制代码优雅写法

a = a || [];

params.success&&params.success(res);

//注意事项

1、if内不能出现var、=等赋值定义语句,才可以使用优雅写法

2、if内可以有多个方法调用,但必须方法内有true返回值(此用法意义不大)

复制代码问题:我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃肿,越来越看不懂.

2、多条件判断

小白写法

var Statistics = function(){

console.log('执行')

}

switch (currentTab)

{

case 0:

Statistics();

break;

case 1:

Statistics();

break;

case 2:

Statistics();

break;

case 3:

Statistics();

break;

}

复制代码优雅写法

//将判断条件作为对象的属性名,将处理逻辑作为对象的属性值

var Statistics = function(){

console.log('执行')

}

const comparativeTotles = new Map([

[0,Statistics],

[1,Statistics],

[2,Statistics],

[3,Statistics]

])

let map = function(val){

return comparativeTotles.get(val)

}

let getMap = map(1); //如果查找不到返回undefined

if(!getMap){

console.log('查找不到')

}else{

concaozuole.log('执行操作')

getMap()

}

复制代码if else

/**

* 按钮点击事件

* @param {number} status 活动状态:1开票中 2开票失败 3 开票成功 4 商品售罄 5 有库存未开团

* @param {string} identity 身份标识:guest客态 master主态

*/

const onButtonClick = (status, identity) => {

if (identity == 'guest') {

if (status == 1) {

//函数处理

} else if (status == 2) {

//函数处理

} else if (status == 3) {

//函数处理

} else if (status == 4) {

//函数处理

} else if (status == 5) {

//函数处理

} else {

//函数处理

}

} else if (identity == 'master') {

if (status == 1) {

//函数处理

} else if (status == 2) {

//函数处理

} else if (status == 3) {

//函数处理

} else if (status == 4) {

//函数处理

} else if (status == 5) {

//函数处理

} else {

//函数处理

}

}

}

复制代码改完后

//利用数组循环的特性,符合条件的逻辑都会被执行,那就可以同时执行公共逻辑和单独逻辑。

const functionA = ()=>{/*do sth*/} // 单独业务逻辑

const functionB = ()=>{/*do sth*/} // 单独业务逻辑

const functionC = ()=>{/*send log*/} // 公共业务逻辑

const actions = new Map([

['guest_1', () => { functionA }],

['guest_2', () => { functionB }],

['guest_3', () => { functionC }],

['guest_4', () => { functionA }],

['default', () => { functionC }],

//...

])

/**

* 按钮点击事件

* @param {string} identity 身份标识:guest客态 master主态

* @param {number} status 活动状态:1开票中 2开票失败 3 开票成功 4 商品售罄 5 有库存未开团

*/

const onButtonClick = (identity, status) => {

let action = actions.get(`${identity}_${status}`) || actions.get('default')

action.call(this)

}

复制代码

三、'骚'操作

1. 生成随机ID

// 生成长度为10的随机字母数字字符串

Math.random().toString(36).substring(2);

复制代码

2. 每秒更新当前时间

setInterval(()=>document.body.innerHTML=new Date().toLocaleString().slice(10,18))

复制代码

3. 生成随机 16 进制 颜色 码 如 # ffffff

'#' + Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, '0');

复制代码

4. 返回键盘

// 用字符串返回一个键盘图形

(_=>[..."`1234567890-=~~QWERTYUIOP[]\~ASDFGHJKL;'~~ZXCVBNM,./~"].map(x=>(o+=`/${b='_'.repeat(w=x

`)()

复制代码

5. 优雅的取整

var a = ~~2.33 ----> 2

var b = 2.33 | 0 ----> 2

var c = 2.33 >> 0 ----> 2

复制代码

6.优雅的金钱格式化

1、使用正则实现

var test1 = '1234567890'

var format = test1.replace(/\B(?=(\d{3})+(?!\d))/g, ',')

console.log(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(format) // 1,234,567,890

复制代码

7. 五种方法实现值交换

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; (小学奥赛题)

复制代码

8. 实现深拷贝

var b = JSON.parse(JSON.string(a))

复制代码

9. 去掉小数部分

//下面几种方式都行

parseInt(num)

~~num

num >> 0

num | 0

复制代码

10. 递归求阶乘

function factorial(n) {

return (n > 1) ? n * f(n - 1) : n

复制代码

11. 打印试试

console.log(([][[]] + [])[+!![]] + ([] + {})[!+[] + !![]])

console.log((!(~+[]) + {})[--[~+''][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] * ~+[]])

复制代码

12. console美化

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

复制代码

最后

如果你对这篇文章感兴趣,就点个赞和关注吧

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[JavaScript优雅写法及骚操作]http://www.zyiz.net/tech/detail-107960.html

java对象赋值优雅写法_JavaScript优雅写法及骚操作相关推荐

  1. 【实用】Java对象与JSON字符串的互转,实用操作!

    最近,工作中会涉及到Java对象与JSON字符串相互转换,虽然说并不难,但打算还是梳理一番,主要内容有: JSON 字符串 转 普通对象 普通对象 转 JSON 字符串 JSON 字符串数组 转 Li ...

  2. java对象赋值优雅写法_看看人家写的API,那才叫优雅!

    在移动互联网,分布式.微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟:以前后端人员 ...

  3. java对象赋值给另一个对象_java面向对象编程

    对象,从字面意思来看就是我们面对的物象.由此便可以知道,万事万物皆为对象.比如:一台电脑,一辆汽车,一部手机等等都是对象. 比如我们想要买一部手机,我们想要内存大一点的,最新款的,CPU 运算快一点的 ...

  4. java对象赋值_Java 对象不使用时为什么要赋值为 null?

    前言 许多Java开发者都曾听说过"不使用的对象应手动赋值为null"这句话,而且好多开发者一直信奉着这句话:问其原因,大都是回答"有利于GC更早回收内存,减少内存占用& ...

  5. java对象赋值给数组_带你深入的理解数组和对象的解构赋值。

    es6提供了一个非常好的特性,即变量的解构赋值.从而我们可以方便的从数组和对象中提取数据并将它们赋值给变量.这是非常必要的.先来看在这个新特性发布之前我们是如何从数组中提取数据的.如下: let nu ...

  6. java 对象赋值给scala_将Scala变量转换为Java对象… varargs

    我有一个 Java类来记录这样一个方法的东西: void info(Object message,Object... params); 在Scala中,我创建了一个这样的一个包装器,看起来像这样: d ...

  7. 如何优雅地打印一个Java对象?

    你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下). 在一个月黑风高的夜晚,我思前想后,觉得再也不能 ...

  8. java对象类型数组赋值_java声明对象数组

    java如何对象创建数组并初始化 急夜影驱动编程小编今天和大家分享答案 /** * 功能:声明一个学生类 * @author qqliweng * 时间:2009-10-22 * 版本:V1.0 */ ...

  9. Java 骚操作花式写法了解一下?

    1.集合初始化 集合的创建.赋值一步到位,想不想学? 来,上边跟我一起画个 List,在你下边画一个Map-- List<String> list = new ArrayList<S ...

  10. JAVA 对象引用,以及对象赋值

    2019独角兽企业重金招聘Python工程师标准>>> 关键字: java对象 引用 Java对象及其引用 关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉 ...

最新文章

  1. java中servlet filter_lua学习笔记(二)仿java servlet中Filter功能
  2. 一周飞越50万平方米,无人机检测1.5吨海滩垃圾!自动分类47种,准确率超95%
  3. DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描...
  4. java mysql数据库编程_java JDBC数据库(mysql)编程
  5. 博客园中的源代码格式显示
  6. Django--模板语言
  7. 生成微信所有朋友合成的头像,来自网络GitHub,
  8. 《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果及其他。...
  9. [wp7游戏]wp7~~~连连看 游戏~~集合贴~~
  10. 机器学习基础:评价指标(Machine Learning Fundamentals: Evaluation Metrics)
  11. C#:JObject、JArray、JProperty、JValue作用
  12. sql语句的书写顺序和执行顺序(包括各种可能的指令)
  13. 前端三大主流框架到底学哪个好呢?
  14. 第三十七周学习生活总结
  15. 解谜游戏中谜题与剧本
  16. 2020西湖论剑Web复现
  17. python 插值求包络线
  18. 帆软报表 异常汇总及方案.
  19. Spring boot的定时任务调度
  20. html视频没有注册类,win10播放视频显示没有注册类怎么解决

热门文章

  1. ftp下载,6步掌握ftp下载软件的使用方法
  2. 在微信上直播的优势有那些
  3. 技术界中的虚拟机、容器和沙箱的关系
  4. 阿里P7级别面试经验总结,面试心得体会
  5. angular写的移动端模板《一》
  6. python微信推送{u‘errcode‘: 40008, u‘errmsg‘: u‘invalid message type rid: 6111061f-19703d5b
  7. 群晖DSM7添加套件源
  8. 433MHz自发电无线控制器
  9. 计算机桌面怎样创建文件,如何在电脑桌面新建一个透明文件夹
  10. 《华为工作法》8 自我提升的华为人