Strict Math开启后仅校验单位匹配性,不改变除法和calc()行为:10px+5报错,但100px/4仍原样输出,calc(100%-40px)仍被提前计算,须用~"calc()"规避。

Strict Math开启后,加减乘除不再隐式转换单位
开启strictMath: true后,10px + 5这种写法会直接编译失败,而不是自动变成10px + 5px。它只允许单位明确且兼容的运算:10px + 5px、2rem * 1.5(数字无单位但rem有)、100px / 2(除法仍需括号或./)都合法;但100% - 20px、2em + 3rem会报Mismatched units错误。
除法行为完全不受Strict Math控制
strictMath: true对/是否执行计算毫无影响——100px / 4在开与不开时都原样输出为100px / 4,浏览器静默丢弃。真正起作用的只有两种写法:(100px / 4)或100px ./ 4。别指望配置能“修复”除法,必须手动改代码。
calc()里的减法依然会被Less解析,Strict Math也拦不住
即使开了strictMath: true,width: calc(100% - 40px)照样被提前计算成calc(60%)或更糟的结果。因为Less把calc()当普通表达式扫描,不是靠strictMath开关控制的。唯一可靠方案是用~"calc(100% - @{gap})",让整个字符串跳过编译。
函数参数里的运算仍受Strict Math约束
像lighten(@color, 10% + 5)这种写法,在strictMath: true下会卡在10% + 5这一步报错,哪怕它只是颜色函数的一个参数。但round(10.7px)没问题,因为round()本身不触发单位校验,只处理数值部分。注意:变量展开后的结果才参与检查,所以@offset: 5; lighten(@color, 10% + @offset)同样会崩。
立即学习“前端免费学习笔记(深入)”;
最容易被忽略的是:strictMath只管“有没有单位”和“单位能不能对齐”,不管“要不要算”——除法是否执行、calc()是否被吃掉,全由语法写法决定,跟这个配置无关。


















