部署代码的时候,构建时可能有些插件包未进行babel处理,容易造成线上兼容事故。
所以需对构建的js文件进行es6语法检查。
我认为一般只需要检测const|let|=>
即可。
一开始想的很简单就针对这三个字符匹配不就好了嘛,reg = /(const | let |=>)/
后来发现打包后代码还有 var $bullet = bullets.eq(current);
,这种写法也被检测出来了,其实这种也算比较常见的写法,其实应该忽略掉,修改后
const regEs6 = /(let|const)s+$?w*?|=>/;
各位大佬看下还有什么遗漏或者未检测的情况么?
简单列了几条,欢迎补充探讨...
/**
* 需要检测的情况
* let (a|_a|$a) = 1;
* let (a|_a|$a);
*
let a = 1
* ;let a = 1
* for(let i = 1; ...)
*/
/**
* 需要忽略的情况
* var $bullet = bullets.eq(current);
* var _let|$let;
*/
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…