我正在使用JSLint来完成JavaScript,并且在执行诸如比较语句内部之类的事情时,它会返回许多建议来替换==(两个等号)===(三个等号).idSele_UNVEHtype.value.length == 0if
有没有性能优势,以代替==用===?
任何性能改进都会受到欢迎,因为存在许多比较运算符
如果没有进行类型转换,是否会有性能提升==?
javascript equality operators equality-operator identity-operator
背景:我正在开发一个框架/库,用于与greasemonkey/userscripts协调的特定站点.该框架/库将允许插件支持.它的工作方式是一个插件寄存器,库中列出了所需的页面,资源,ectera和库将等到所有的critera都满足调用addon的load()功能.
问题:在这个"必需的东西"列表中,我希望addon devs能够指定javascript(作为字符串)作为"必需资源"进行评估.例如'document.getElementById("banana")'.我想要做的是半沙盒评估"必需资源",以便评估可以访问窗口和DOM对象,但不能直接改变它们.我也想制作eval,并且沙盒中的evalJS无法访问.
示例:
document.getElementById("banana") - >有效document.getElementById("apple).id = "orange" - >无效window.grape - >有效window.grape = 'potato' - >无效(someObj.applesCount > 0 ? 'some' : 'none') - >有效
到目前为止我所拥有的:
function safeEval(input) {
// Remove eval and evalJS from the window:
var e = [window.eval, window.evalJS], a;
window.eval = function(){};
window.evalJS = function(){};
try {
/* More sanition needed before being passed to eval */
// Eval the input, stuffed into an …Run Code Online (Sandbox Code Playgroud) 我写了以下内容:
Object.prototype.length = function(){
var count = -1;
for(var i in this) count++;
return count;
}
Run Code Online (Sandbox Code Playgroud)
有用.但是当我执行我的页面时,即使不使用这个函数,Firebug告诉我jQuery .appendTo()不再是一个函数.为什么会这样?
javascript ×3
equality ×1
eval ×1
greasemonkey ×1
jquery ×1
methods ×1
object ×1
operators ×1
prototype ×1
sandbox ×1