文章同步发布: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 优化逻辑判断的更多相关文章

  1. Math.min() Math.max() Math.min().apply() Math.max() .apply()该如何使用???

    Math.min()和 Math.max()  语法: Math.min(x,y) Math.max(x,y) 虽然能取到最小值和最大值,但是不支持数组. 那么如何计算数组中的大小值呢???????? ...

  2. js取最小最大值--Math.min()、math.max()

    一.Math.min() 返回一组表达式中最小者 eg: var n = Math.min( 2 , 30 ,1 , 200-10 , 300*22 , 20-30 ); alert(n); //打印 ...

  3. JavaScript中Date(日期对象),Math对象--学习笔记

    Date对象 1.什么是Date对象? 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 语法:var Udate=new Date();  注:初始值为当前时间(当前电脑系统 ...

  4. 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() 语法 ...

  5. Javascript中的Math.max()和Math.min()

    Math.max()是求最大值,Math.min()是求最小值 Math.max(value1,value2,value3....) 但是如果是数组或者对象呢? var numArr = [1,2,4 ...

  6. 复习C#的方法Math.Max和Math.Min

    温故而知新,今天学习Math.Max和Min的方法.这2个方法,均需要传入2个参数,返回参数中最大值和最小值. class Ac { public void LeanMathFunction() { ...

  7. Math.min() / Math.max() 使用方法

    首先弄懂apply 和 call 都是js函数自带的方法.区别如下: apply和call的用法只有一个地方不一样,除此之外,其他地方基本一模一样 1. a.call(b,arg1,arg2…) 2. ...

  8. 【JavaScript】内置对象Math

    Math是具有用于数学常数和函数的属性和方法一内置对象.不是函数对象. 描述编辑 不像其他的全局对象,Math不是一个构造函数.所有属性和方法Math都是静态的.你指的是常数pi为Math.PI你调用 ...

  9. 初识 Javascript.02 -- Date日期、Math对象、数据类型转换、字符串、布尔Boolean、逻辑运算符、if else 、三元表达式、代码调试方法、

    Date()对象: Date对象用于处理日期和时间. 1.1 Math对象  ◆Math.ceil()   天花板函数    向上取整  只取整数,不足则进1 ◆Math.floor()  地板函数 ...

  10. javascript 取整,取余数 math方法

    1.丢弃小数部分,保留整数部分 parseInt() 函数可解析一个字符串,并返回一个整数. parseInt(string, radix) 参数 描述 string 必需.要被解析的字符串. rad ...

随机推荐

  1. sublime text 4 安装(含激活码)

    一.下载步骤 官网地址:Sublime Text - the sophisticated text editor for code, markup and prose windows下载链接:Than ...

  2. SpringBoot 2.0.0新版和SpringBoot1.5.2版本中Tomcat配置的差别(坑)

    2018年春SpringBoot 2.0.0 新版本有了很多新的改变,其中Tomcat配置上也有了很大改变1.之前老的版本TomcatEmbeddedServletContainerFactory取的 ...

  3. 转载 Netty tls验证

    https://blog.csdn.net/luo15242208310/article/details/108215019 目录Java ssl单向TLSServer端Client端双向TLSser ...

  4. Qt开发经验小技巧271-275

    编程的过程中经常遇到需要将QString转成char *或者const char *的情况,在转换成QByteArray后调用.data()或者.constData()函数进行转换,这里需要注意的是, ...

  5. Qt数据库应用9-数据导出组件使用方法

    一.使用方法 1.1 第一步:引入组件 组件中所有代码文件是一个整体,不支持单个代码文件拆分使用,因为很多通用的方法都放在一个代码文件中,复用很多代码. datehead是本组件用到的头文件以及通用的 ...

  6. Qt自定义控件大全文章导航

    文章 链接 Qt编写自定义控件1-汽车仪表盘 https://qtchina.blog.csdn.net/article/details/89407746 Qt编写自定义控件2-进度条标尺 https ...

  7. Qt5离线安装包无法下载问题解决办法

    1.前言 Qt5离线安装包目前在国内已经被墙了,无法下载,只能下载在线安装包: 直接访问会显示Download from your IP address is not allowed: 本文就提出两种 ...

  8. 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 ...

  9. 基于实践:一套百万消息量小规模IM系统技术要点总结

    本文由公众号"后台技术汇"分享,原题"基于实践,设计一个百万级别的高可用 & 高可靠的 IM 消息系统",原文链接在文末.由于原文存在较多错误和不准确内 ...

  10. 为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?

    打开我们的命令行,输入 python ,我们会进入 python 的交互模式. 当我们想退出 python ,返回我们的 shell 时,你将如何退出? 如上,两个行之有效的方法是输入 exit() ...