JavaScript字符串未正确评估?

Joe*_*zel 1 javascript jquery

使用jQuery和jQuery URL插件.

我有以下代码:

$('#secondary-nav > li > ul > li > a').each( function() {
    var aHref = new String( $(this).attr('href') );
    alert (aHref);
    var wUrl = new String( $.url().attr('file') );
    alert (wUrl);
    alert ( aHref === wUrl );
});
Run Code Online (Sandbox Code Playgroud)

aHref和wUrl都是字符串对象(我已使用instanceof确认).但比较结果却是错误的.代码在"pageA.html"上,其中一个锚点的href是"pageA.html",但它从未计算为true.

Hen*_*olm 6

Javascript在字符串和String 对象之间区分,令人困惑.更令人困惑的是,它们在许多情况下都是可以互换的; ===是少数几个真正有所作为的案例之一.对于对象,===测试双方是否是同一个对象,由一个特定的构造函数调用创建.另一方面,字符串按内容进行比较.

有了您的new String(...)您明确要求获得实际的字符串对象从你喂到构造函数的值.这意味着您===在以后比较它们时会严格意识到这一点.

要解决您的问题,只需省略new String代码即可.