检查参数是否为字符串

时间:2010-12-11 10:47:17

标签: javascript jquery variable-types

我有一个使用document.getElementById()的JavaScript函数。我想升级它以便能够使用jQuery选择器($(this).parent().find("blah")),但是它需要能够使用原始方法来实现向后兼容性。有没有办法可以测试传递给函数的参数是否为字符串(因此我可以使用getElementById)或jQuery对象(不是字符串)。

我可以使用.length,但这是一种确定参数是否为字符串的故障保护方法吗?

只要我可以测试字符串,jQuery分支就可以进入else - 我不需要确定它不是字符串,尽管测试它是否是jQuery会很好太

谢谢,

詹姆斯

5 个答案:

答案 0 :(得分:4)

以下代码返回true:

"somestring".constructor == String

答案 1 :(得分:3)

Object.prototype.toString.call(your_argument) == "[object String]"

答案 2 :(得分:2)

这就是你要追求的吗?

var str = "blah";
if (typeof str == "string") {

} else {


}

并且length绝对不是要走的路。数组也有一个长度属性,更不用说任何自定义对象了。

答案 3 :(得分:0)

我认为instanceOf就是你要找的东西。请参阅此帖子:What is the instanceof operator in JavaScript?

答案 4 :(得分:0)

JavaScript有两种字符串。这会检查两种类型。

function isString (str)
{
  return str instanceof String || typeof str === 'string';
}

这将始终为ReferenceError,如果参数未声明,尽管typeof不会引发错误,因为JavaScript从左到右进行评估(请参阅Short-circuit evaluation)。