2015-04-22 63 views
0

我不知道這是一個錯誤返回一個布爾值,但感覺有種異樣。你可以存儲一個函數返回的布爾值在一個變量使用JavaScript?每當我嘗試在一個函數返回的變量中存儲一個布爾值時,它就會變成字符串。不能存儲通過函數在一個變量

我有以下功能,將字符串轉換爲布爾

function str2bool(strvalue){ 
    console.log("Value is - " + strvalue); 
    console.log("Type is - " + typeof strvalue); 
    return (strvalue && typeof strvalue == 'string') ? (strvalue.toLowerCase() == 'true') : (strvalue == true); 
} 

我發現這個功能在這裏StackOverflow的地方,但我不記得它的作者,所以如果你正在讀這篇文章,約我遺憾沒有給予適當學分:)

我有另一個JavaScript線,如下所示:

target.prop('disabled',str2bool(booleanInStringFormat)); 
console.log("Typeof str2bool return is - " + typeof str2bool(booleanInStringFormat)); 

如果我使用這種方式,everyting工作正常,則str2bool函數返回下列行控制檯:

值是 - 假
類型是 - 字符串

而行主函數返回後:

TYPEOF str2bool的功能是 - 布爾

但是,如果我嘗試str2bool的返回值存儲在一個變量,事後用它,道具功能將無法正常工作,因爲很明顯,我用它來存儲str2bool的返回值的變量就成了一個字符串。如果我運行此代碼,我得到如下結果:

status = str2bool(booleanInStringFormat); 
console.log("Typeof status is - " + typeof status); 
target.prop('disabled',status); 

結果如下:

值是 - 假
類型是 - 字符串
TYPEOF狀態 - 字符串
末結果是該目標仍然被禁用

那麼,爲什麼是我存儲返回的變量的類型的功能是否改回字符串?

+3

是的,這是隱式字符串轉換。 _Something_''''_String_'=='_String_。總是(大部分時間)。 – Xufox

+0

但是沒有任何內容被添加到最終結果中... –

+0

好吧,也許我誤解了它......無論如何。 – Xufox

回答

1

因爲你使用全局變量status,這似乎是全局對象window的特性解析布爾,這個屬性只能是字符串

The window.status

你可以只更改爲其他變量名,但要好得多,避免使用全局變量。

(function(){ 
    var status = str2bool('false'); 
    console.log(typeof status); 
}()); 
+0

是的,這是問題...感謝您的及時答案:)什麼是btw的全局狀態變量?謝謝:)將在幾分鐘內標記爲正確:) –

+0

@AdamBaranyai它用於設置瀏覽器底部狀態欄中的文本。 – xdazz

0

您可以使用!!

var bool = !!'true'; 
+0

這意味着'!!'false''返回'false',_right_? – Xufox

+0

事情是:它不這樣工作。任何不爲空的字符串都被認爲是「真」。 – Xufox

1

嘗試下面的片段中,我們似乎可以返回一個布爾值,並將其保存

function booleanReturnCheck(){ 
    return false; 
} 

var isBool = booleanReturnCheck(); 
console.log(isBool); 
console.log(typeof (isBool)); 

JSFIDDLE

+1

是的,問題是我試圖存儲它的變量:)見下面的答案:)謝謝你的努力,雖然:) –

1

這個環節上接受的答案討論布爾變量。或許真的有可能幫助:Declaring a boolean in JavaScript using just var

的部分要注意的是

var IsLoggedIn1 = "true"; //string 
var IsLoggedIn2 = 1; //integer 
var IsLoggedIn3 = true; //bool 

看來,你的價值觀是字符串,因爲他們是被設定爲字符串。

0

可以使用解析布爾變量:

  1. var myVar = Boolean("false");
  2. var myVar = !!"false";

注意,任何字符串這不是空字符串或「假」將評估爲「真」 。

相關問題