如果您想要可靠的方法来执行此操作,则需要使用
--allow-natives-syntaxflag 运行node 并调用此方法:
%NeverOptimizeFunction(constantTimeStringCompare);
请注意,您应该在调用之前先调用此
constantTimeStringCompare函数,如果函数已经优化,则违反了断言。
否则,
with声明是您最好的选择,因为使其变得乐观可能是绝对的谬论,而支持则
try/catch是合理的。您虽然不需要它来影响您的代码,但这已足够:
function constantTimeStringCompare( a, b ) { with({}); var valid = true, length = Math.max( a.length, b.length ); while ( length-- ) { valid &= a.charCodeAt( length ) === b.charCodeAt( length ); } // returns true if valid == 1, false if valid == 0 return !!valid;}仅提及
with语句会破坏整个包含的函数-优化是在函数级粒度上完成的,而不是针对每个语句。



