gpt4 book ai didi

JavaScript if 语句运行两个条件 if 使用位置替换

转载 作者:行者123 更新时间:2023-12-03 12:27:12 26 4
gpt4 key购买 nike

我有以下 if 语句,用于在文档就绪时查找哈希(此代码永远不会在页面上再次运行)。如果没有哈希,则使用替换添加一个,这样就不会触发 hashchange 事件。

if( window.location.hash == '' ) {

console.log('no hash');

location.replace(location.href.replace(/\/?$/, '#/section-0/page-0')); // change the url without creating a hashchange

} else {

console.log('has hash');

}

但是,如果我访问没有哈希的页面,我将在控制台中看到有哈希,并且替换将会发生...这怎么可能?因为控制台日志位于语句的不同部分。如果我注释掉替换,那么它只会落入 if 语句的第一部分。它如何跳转到 if 语句进行替换(但忽略第一个控制台日志),然后跳转到第二部分?

最佳答案

你说的没有道理。

我尝试从您的代码中制作一个完整的示例:

<html>
<head>
<script type='text/javascript'>
function x()
{
if( window.location.hash == '' )
{
console.log('no hash');
location.replace(location.href.replace(/\/?$/, '#/section-0/page-0')); // change the url without creating a hashchange

alert('changed!');
}
else
{
console.log('has hash');
}
}
</script>
</head>
<body>
<button onclick="javascript:x()">test</button>
</body>
</html>

打开default时此代码执行如下:

  1. 点击按钮
  2. 控制台无哈希
  3. 提醒
  4. 点击按钮
  5. 控制台有哈希

如果将没有函数声明的代码放在主体中(因此它始终执行),如下所示:

<html>
<body>
<script type='text/javascript'>
if( window.location.hash == '' )
{
console.log('no hash');
location.replace(location.href.replace(/\/?$/, '#/section-0/page-0')); // change the url without creating a hashchange

alert('changed!');
}
else
{
console.log('has hash');
}
</script>
</body>
</html>

它显示:

  1. 控制台无哈希
  2. 提醒

关于JavaScript if 语句运行两个条件 if 使用位置替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com