javascript 利用 Math.min 与 Math.max 优化逻辑判断
文章同步发布:https://blog.jijian.link/2020-04-08/js-math-min-max/
Math.min 和 Math.max 方法常用来获取多个数值的最小值和最大值,比如:
Math.min(10, 30, 40, 3); // 返回 3
Math.max(10, 30, 40, 3); // 返回 40
利用此特性,可以优化一些常见数字判断,尤其在方法传参时候,数字判断能有奇效。
常见 if 写法
function test (num1, num2) {
if (num1 < 60) {
num1 = 60;
}
if (num2 > 100) {
num2 = 100;
}
console.log(num1, num2);
}
常见三元表达式
function test (num1, num2)) {
num1 = num1 < 60 ? 60 : num1;
num2 = num2 > 100 ? 100 : num2;
console.log(num1, num2);
}
以上开发中常见逻辑判断写法,其实这种数字判断可以利用 Math 优化,如下:
function test (num1, num2)) {
num1 = Math.max(num1, 60);
num2 = Math.min(num2, 100);
console.log(num1, num2);
}
这种写法好处是如果有多个数值进行比较时,这种写法更精简。
比如: hexo 图片添加水印(png, jpeg, jpg, gif) 文章中有一段代码:
logoImage.resize(Math.min(logoImage.bitmap.width, img.width * (8 / 10)), Jimp.AUTO); const margin = Math.min(img.width * LOGO_MARGIN_PERCENTAGE, img.height * LOGO_MARGIN_PERCENTAGE, 20);
此代码逻辑是:
第一段:如果水印 LOGO 图片宽度小于图片宽度的 80% ,则将水印 LOGO 等比缩小 80%。
第二段:水印位置最多添加在距离图片右下角 20px 位置,不能超过 20px。
第二段如果使用 if 判断,会多出更多的代码,精简后大概如下:
const margin = width > 20 ? ( height > 20 ? 20 : height) : width;
相比而言,使用 Math.min 更简洁。
javascript 利用 Math.min 与 Math.max 优化逻辑判断的更多相关文章
- Math.min() Math.max() Math.min().apply() Math.max() .apply()该如何使用???
Math.min()和 Math.max() 语法: Math.min(x,y) Math.max(x,y) 虽然能取到最小值和最大值,但是不支持数组. 那么如何计算数组中的大小值呢???????? ...
- js取最小最大值--Math.min()、math.max()
一.Math.min() 返回一组表达式中最小者 eg: var n = Math.min( 2 , 30 ,1 , 200-10 , 300*22 , 20-30 ); alert(n); //打印 ...
- JavaScript中Date(日期对象),Math对象--学习笔记
Date对象 1.什么是Date对象? 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 语法:var Udate=new Date(); 注:初始值为当前时间(当前电脑系统 ...
- JavaScript中的内置对象-8--3.Math-Math对象的方法-min()- max()- ceil() - floor()- round()- abs(); Math对象的random()方法;
JavaScript内置对象-3.Math(数值) 学习目标 1.掌握Math对象的方法: min() max() ceil() floor() round() abs() Math.min() 语法 ...
- Javascript中的Math.max()和Math.min()
Math.max()是求最大值,Math.min()是求最小值 Math.max(value1,value2,value3....) 但是如果是数组或者对象呢? var numArr = [1,2,4 ...
- 复习C#的方法Math.Max和Math.Min
温故而知新,今天学习Math.Max和Min的方法.这2个方法,均需要传入2个参数,返回参数中最大值和最小值. class Ac { public void LeanMathFunction() { ...
- Math.min() / Math.max() 使用方法
首先弄懂apply 和 call 都是js函数自带的方法.区别如下: apply和call的用法只有一个地方不一样,除此之外,其他地方基本一模一样 1. a.call(b,arg1,arg2…) 2. ...
- 【JavaScript】内置对象Math
Math是具有用于数学常数和函数的属性和方法一内置对象.不是函数对象. 描述编辑 不像其他的全局对象,Math不是一个构造函数.所有属性和方法Math都是静态的.你指的是常数pi为Math.PI你调用 ...
- 初识 Javascript.02 -- Date日期、Math对象、数据类型转换、字符串、布尔Boolean、逻辑运算符、if else 、三元表达式、代码调试方法、
Date()对象: Date对象用于处理日期和时间. 1.1 Math对象 ◆Math.ceil() 天花板函数 向上取整 只取整数,不足则进1 ◆Math.floor() 地板函数 ...
- javascript 取整,取余数 math方法
1.丢弃小数部分,保留整数部分 parseInt() 函数可解析一个字符串,并返回一个整数. parseInt(string, radix) 参数 描述 string 必需.要被解析的字符串. rad ...
随机推荐
- ssh远程执行命令方法和Shell脚本实例
写这篇博客之前,我google了一堆相关文章,大都是说修改/etc/sudoers,然后NOPASSWD:指定的cmd,但是真心不管用,没有远程虚拟终端这个方法就是浮云,ubuntu10.04 ser ...
- 使用Spring提供的BeanUtils.copyProperties()方法报错:Could not copy property 'xxx' from source to target
使用Spring提供的BeanUtils.copyProperties()方法报错:Could not copy property 'xxx' from source to target; neste ...
- Qt/C++最新地图组件发布/历时半年重构/同时支持各种地图内核/包括百度高德腾讯天地图
一.前言说明 最近花了半年时间,专门重构了整个地图组件,之前写的比较粗糙,有点为了完成功能而做的,没有考虑太多拓展性和易用性.这套地图自检这几年大量的实际项目和用户使用下来,反馈了不少很好的建议和意见 ...
- 前后端分离模式下Java Web开发中的技术栈概图
参考链接1:前后端的分离模式 参考链接2:浅谈前后端分离开发模式 参考链接3:前后端分离开发模式介绍
- 阿里IM技术分享(五):闲鱼亿级IM消息系统的及时性优化实践
本文由阿里闲鱼技术团队有攸分享,原题"向消息延迟说bybye:闲鱼消息及时到达方案",有修订和改动,感谢作者的分享. 1.引言 IM消息作为闲鱼用户重要的交易咨询工具,核心目标有两 ...
- JDK 19 Virtual Threads 虚拟线程
前言 Project Loom Loom 是什么? 为什么要引入 Loom? Virtual threads Platform thread 是什么? Virtual thread 是什么? Virt ...
- V3Det&Bigdetection下载记录
V3Det dataset https://opendatalab.com/V3Det BigDetection
- BotSharp 4.0 Sidecar:迈向更大规模化的AI Agent平台框架
BotSharp 是一个功能强大的开源项目,由 SciSharp[1] 社区开发和维护,旨在实现.NET技术栈下高度可定制的多智能体解决方案.为开发高效的对话式 AI 系统提供了极大的灵活性.通过其模 ...
- mac文件目录结构
详解MAC硬盘中各个文件夹 详解MAC硬盘中各个文件夹 打开Macintosh HD你会发现内中有四个文件夹 分别有--应用程序(Applications).系统(System).用户(User).资 ...
- mysql异常处理的收集
今天在处理mysql的存储过程,判断游标是否到了结尾,结果让返回零行的一个查询触发了,随即从网上查阅资料收集异常异常处理. MySql错误处理(一)- SQL服务器模式 导言:MySql错误处理的基础 ...