Javascript:设置location.href与位置

你什么时候将location设置为URLstring与设置location.href

 location = "http://www.stackoverflow.com"; 

VS

 location.href = "http://www.stackoverflow.com"; 

Mozilla开发者networking参考

您可以直接设置location ,因为它略短。 如果你想要简洁,通常可以省略window. 太。

location.hreflocation.hreflocation URL分配定义为在JavaScript 1.0中工作,在Netscape 2中工作,并且在每个浏览器中都已经实现。 所以,你可以select并使用你最清楚的地方。

即使两者都工作,我会用后者。 location是一个对象,并且将一个string分配给一个对象对于可读性或维护来说不是一个好兆头。

就像已经说过的那样, location是一个对象但那个人build议使用。 但是,您将会更好地使用.href版本。

对象具有默认属性,如果没有其他指定,则假定它们。 location对象的情况下,它有一个名为.href的属性。 而且在赋值过程中不指定任何属性,默认情况下它将假定为“href”。

这一切都很好,直到稍后的对象模型版本发生更改,并且不再是默认属性,或者默认属性发生更改。 然后你的程序意外中断。

如果你的意思是href ,你应该指定href

几年前, location不适合我在IE和location.href (并在其他浏览器)。 从那以后,我一直使用location.href ,从来没有麻烦。 我不记得是哪个版本的IE。

只是为了澄清,你不能做location.split('#')location是一个对象,而不是一个string。 但是你可以做location.href.split('#'); 因为location.href是一个string。

不过要记住一点。

假设您想使用当前的URL构build一些URL。 下面的代码实际上会redirect你,因为它不是调用String.replace而是调用Location.replace

 nextUrl = window.location.replace('/step1', '/step2'); 

以下代码工作:

 // cast to string nextUrl = (window.location+'').replace('/step1', '/step2'); // href property nextUrl = window.location.href.replace('/step1', '/step2');