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 ...
随机推荐
- sublime text 4 安装(含激活码)
一.下载步骤 官网地址:Sublime Text - the sophisticated text editor for code, markup and prose windows下载链接:Than ...
- SpringBoot 2.0.0新版和SpringBoot1.5.2版本中Tomcat配置的差别(坑)
2018年春SpringBoot 2.0.0 新版本有了很多新的改变,其中Tomcat配置上也有了很大改变1.之前老的版本TomcatEmbeddedServletContainerFactory取的 ...
- 转载 Netty tls验证
https://blog.csdn.net/luo15242208310/article/details/108215019 目录Java ssl单向TLSServer端Client端双向TLSser ...
- Qt开发经验小技巧271-275
编程的过程中经常遇到需要将QString转成char *或者const char *的情况,在转换成QByteArray后调用.data()或者.constData()函数进行转换,这里需要注意的是, ...
- Qt数据库应用9-数据导出组件使用方法
一.使用方法 1.1 第一步:引入组件 组件中所有代码文件是一个整体,不支持单个代码文件拆分使用,因为很多通用的方法都放在一个代码文件中,复用很多代码. datehead是本组件用到的头文件以及通用的 ...
- Qt自定义控件大全文章导航
文章 链接 Qt编写自定义控件1-汽车仪表盘 https://qtchina.blog.csdn.net/article/details/89407746 Qt编写自定义控件2-进度条标尺 https ...
- Qt5离线安装包无法下载问题解决办法
1.前言 Qt5离线安装包目前在国内已经被墙了,无法下载,只能下载在线安装包: 直接访问会显示Download from your IP address is not allowed: 本文就提出两种 ...
- MySql 建表出现的问题 : [ERR] 1064 - You have an error in your SQL syntax; check the manual.......
使用 MySql 建表出现的问题 在使用 Navicat Premium 运行 sql 语句进行建表时,MySQL 报错如下: 1064 - You have an error in your SQL ...
- 基于实践:一套百万消息量小规模IM系统技术要点总结
本文由公众号"后台技术汇"分享,原题"基于实践,设计一个百万级别的高可用 & 高可靠的 IM 消息系统",原文链接在文末.由于原文存在较多错误和不准确内 ...
- 为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?
打开我们的命令行,输入 python ,我们会进入 python 的交互模式. 当我们想退出 python ,返回我们的 shell 时,你将如何退出? 如上,两个行之有效的方法是输入 exit() ...