JavaScript if语句运行两个条件,如果位置替换使用
JavaScript if statement running both conditions if location replace used
我有下面的if语句,查找文档准备好的散列(这段代码永远不会在页面上再次运行)。如果没有散列,则使用replace添加一个,这样就不会触发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');
}
但是,如果我访问没有散列的页面,我将在控制台中看到的是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时,代码执行如下:
- <
- 点击按钮/gh>
- 控制台
no hash
< - 警告/gh><
- 点击按钮/gh>
- Console
has hash
如果你把没有函数声明的代码放在代码体中(这样它就会一直执行),像这样:
<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>
显示了:
- Console
no hash
< - 警告/gh>
相关文章:
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 如果条件匹配,则停止执行脚本
- 如果条件为循环-性能差异
- 如果条件将长 JavaScript 拆分为多行是否安全
- 如果条件在代码点火器的模型中不起作用
- 如果条件推送包含/匹配字符串的值
- Javascript 'while' 循环,如果条件为 false,如何停止迭代
- 如果条件,则在其他操作之后调用 Redux 操作
- Jquery - 如果条件为真,则遍历选择器并执行某些操作
- 如果条件为true,ServiceNow显示按钮
- 如果条件在JAVASCRIPT中不起作用
- 如果条件点击 - jQuery
- 如果条件在 jQuery 中
- 如果条件在javascript中无法正常工作
- 清除间隔如果(条件)
- 如果条件不起作用,则有类
- 如果条件无法呼叫最后
- 如果条件未按预期工作,为什么此 javascript
- 如果条件在节点 js 中不起作用
- JavaScript:否则,如果条件不起作用