为什么href="javascript:window.location.href='#xxx'&q

Why href="javascript:window.location.href='#xxx';" does't work?

本文关键字:href #39#xxx location window javascript quot 为什么      更新时间:2023-09-26

href="#xxx" and href="javascript:jumpTo('xxx');"可以工作,方法jumpTo是这样的:

function jumpTo(anchor) {
    window.location.href= '#' + anchor;
}

然而,href="javascript:window.location.href='#xxx';"不起作用,我想知道为什么?

使用javascript: URI时,如果表达式产生truthy值,则该值将作为页面的唯一内容。

由于赋值运算符返回被赋值的值,其行为类似于:

<a href="javascript:'#xxx'">Test</a>

防止输出值的一个选项是在表达式的开头添加void运算符,该运算符返回undefinedfalsy值):

<a href="javascript:void window.location.hash='#xxx';">Test</a>

此外,当使用jumpTo()时,结果与使用void相同。由于函数没有显式地将return作为值,因此默认情况下会产生undefined值。