布尔变量从javascript函数返回为字符串

时间:2015-04-16 20:30:14

标签: javascript

为什么当我回来时,我认为是来自javascript函数的布尔变量,它在调用函数中被检测为字符串,但是如果我返回一个布尔文字,则调用函数将其检测为布尔值?

所以,例如:



$( document ).ready(function(){
    $('#result').text(typeof validate());
    $('#result2').text(typeof validate2());
});

function validate(){
    status = true;
    status = false;
    return status;
}
    
function validate2(){
    return true;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Hello</p>
<div id="result"></div>
<div id="result2"></div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:7)

您没有声明status状态变量。

因此,全局的(window.status)会被覆盖。

但是,HTML 5 spec将该属性定义为DOMString:

interface Window : EventTarget {
  attribute DOMString status;
};

因此,它有一个存储字符串值的setter(公开或内部)。

要解决此问题,只需使用var statement声明您的本地变量。

答案 1 :(得分:1)

$( document ).ready(function(){
    $('#result').text(typeof validate());
    $('#result2').text(typeof validate2());
});

function validate(){
    var status = true;
    status = false;
    return status;
}
    
function validate2(){
    return true;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Hello</p>
<div id="result"></div>
<div id="result2"></div>

编辑:我正在构建答案并出现问题,无论如何,@ Oriol解释了原因:全局window.status变量是具有字符串值类型的变量。< / p>