js黑科技语法,求助
今天看一个min.js里面遇到一个如下这样的语法,小弟不才,看不懂这if条件判断语句是个什么意思,请大神指点
var a = "";
var b = ["replace"];
if(!a[b](/^/, String)){
console.log('业务逻辑');
}
8 回复
以下是根据你的情况演变的:
!a[b](/^/, String)
--> !a[b.toString()](/^/, String)
--> !a[['replace'].toString()](/^/, String)
--> !a['replace'](/^/, String)
--> !a.replace(/^/, String)
这个条件判断经常在加密压缩后的文件里出现, 是用来检测当前环境''.replace()
第二个参数是否可以是一个函数.
if (!''.replace(/^/,) { //
// 在支持函数的环境. 相当于
if (!"".replace(/^/, function(match) {
return String(match)
})) {
}
// 在不支持的环境, String会转换为字符串
if (!''.replace(/^/, String.toString())) { // 即 !''.replace(/^/, "function String() { [native code] }") === false;
}