2010-07-15 60 views
2

因为使用.toString()作为空变量不起作用,并且我无法在我的特定应用程序中检查其中的每一个。Javascript,String:获取Javascript var作为字符串

我知道这是一个愚蠢而简单的问题,现在我的答案肯定是盯着我。

+0

“字面意思” - 双关语意? – heisenberg 2010-07-15 18:51:15

+0

例如,如果传递了'null'或'undefined',你期望在字符串中看到什么。 – Anurag 2010-07-15 19:05:51

回答

5

非级联的路线是使用字符串()构造:

var str = new String(myVar); // returns string object 
var str = String(myVar);  // returns string value 

当然,var str = "" + myVar;是短且容易。请注意,这里的所有方法都会将值为null的变量转换为"null"。如果你想解决这个问题,你可以使用||设置默认当一个变量的值是“falsey”像空:

var str = myVar || ""; 

只是,只要你知道和也将导致""在这里。

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String

2

如何

var str = '' + someVar; 
+0

似乎有点hackish ...?呃,它会起作用。 – Hamster 2010-07-15 18:49:30

+0

@Hamster当然,它是黑客,所以坚持它的功能,使其更清洁。然后,如果你最终得到新的变量来处理,你可以变得更聪明。 – 2010-07-15 18:55:00

+0

+1 - 简而言之,就像'String(myVar)'一样工作,然而,当一个表单值本身是''null''时,可能会出现边界情况。这些都是可以让生活在地狱1个月的错误:) – Anurag 2010-07-15 19:03:46

0

......怎么样?

var theVarAsString = "" + oldVar;

1

什么

var str = (variable || ""); 
//or 
(variable || "").toString(); 

当然,你会得到这样的falseundefined等等,太多,但是这将是一个空字符串,而不是"null"

1

String(null)返回"null",如果表单域的值本身为null,则可能会导致问题。那么简单的包装函数呢?

function toString(v) { 
    if(v == null || v == undefined) { 
     return ""; 
    } 
    return String(v); 
} 

只有nullundefined,和空字符串应该返回空字符串。包括整数0在内的所有其他falsy值将返回其他值。一些测试,

> toString(null) 
"" 
> toString(undefined) 
"" 
> toString(false) 
"false" 
> toString(0) 
"0" 
> toString(NaN) 
"NaN" 
> toString("") 
""