【问题标题】:Understanding a Window.location working solution了解 Window.location 工作解决方案
【发布时间】:2021-01-14 09:20:29
【问题描述】:

我是 javascript 和编程新手,我正在尝试理解要在我的项目中实现的这段代码

function url_redirect(url){
    var X = setTimeout(function(){
        window.location.replace(url);
        return true;
    },300);

    if( window.location = url ){
        clearTimeout(X);
        return true;
    } else {
        if( window.location.href = url ){
            clearTimeout(X);
            return true;
        }else{
            clearTimeout(X);
            window.location.replace(url);
            return true;
        }
    }
    return false;
};

来源 - https://stackoverflow.com/a/53706698。 我无法弄清楚这其中的逻辑。为什么在 if 语句中使用单个 '='? if(window.location = url) 是什么意思?

【问题讨论】:

  • 单个 = 表示将值分配给变量。当您将值分配给变量时,它会返回值本身。因此 if(window.location=url) 将首先返回将位置分配给 url。如果 url 不为空,它将进入 if 语句,因为分配返回分配给它的值。但我不确定它是否正确
  • @Vikrant 一般来说,是的,但在这种特殊情况下,if (window.location = url) 会立即重定向。代码中应该有比较运算符而不是赋值,即它不是“工作解决方案”。
  • 你真正想在这里做什么/你想解决的问题是什么?这可能会产生一个您可能会发现对您更有用/为您提供更好信息的答案。

标签: javascript dom-events window.location


【解决方案1】:

首先检查条件,然后执行(如果需要)更改:

function url_redirect(url){    
    if( window.location.href == url ){
       return false;
    }

    // if you need wait
    setTimeout(function(){
        window.location.replace(url);
    }, 300);

    // if you don't need to wait
    window.location.replace(url);

    return true;
};

我不确定返回的期望 - 当为真时为假,假设如果 URL 改变 -> 否则为真 -> 假

【讨论】:

  • 你能解释一下 if(window.location = url) 的含义吗?为什么在 if 语句中使用单个 =
  • 抱歉 - 这是你的代码 - 我错过了那些错误的比较 - 它应该是 == 甚至是 === 而不是 =
  • 这实际上不是我的代码。从另一个帖子中得到它。来源 - stackoverflow.com/a/53706698
猜你喜欢
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 2022-10-31
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多