我的情况是我正在探索代码注入,因此在IIFE函数中故意放弃了var / let。
阻止IIFE运行的最佳方法是什么?如果在Node REPL中尝试此代码,则Hammerhead变量将落在全局范围内。我试图弄清楚如何防止这样的代码注入。是否可以在运行IFFE之前将所有参数转换为字符串?
IS MISSING predicate
节点REPL>锤头
打印
“在全球范围内”
我认为也许我可以将Arguments转换为String,但似乎JavaScript首先会评估IIFE。
function keepItLocal(input) {
console.log(input);
return input;
}
keepItLocal('test', (function IIFE() {
hammerhead = 'on the global scope';
console.log(hammerhead);
return 1
}()));