检查参数是否为字符串
我有一个使用document.getElementById()
的JavaScript函数。我想升级它以便能够使用jQuery选择器($(this).parent().find("blah")
),但它需要能够使用原始方法来实现向后兼容。有没有一种方法可以测试传递给函数的参数是字符串(所以我可以使用getElementById
)或jQuery对象(不是字符串)。检查参数是否为字符串
我可以使用.length
,但这是一个确定参数是否为字符串的故障安全方法?
只要我可以测试字符串,jQuery分支可以在else
- 我不需要绝对确定它不是一个字符串,虽然它可以很好地测试它是否也是jQuery。
感谢,
詹姆斯
Object.prototype.toString.call(your_argument) == "[object String]"
我觉得}这种是你在找什么。看到这个帖子:What is the instanceof operator in JavaScript?
这只适用于转换成对象的字符串,例如通过'new String(“test”)',而不是原语。 – 2010-12-11 11:03:25
这是你以后在做什么?
var str = "blah";
if (typeof str == "string") {
} else {
}
和length
绝对不是要走的路。数组也将具有长度属性,更不用说任何自定义对象。
+1告诉我不要使用'.length' - 感谢您的建议:-) – Bojangles 2010-12-11 11:04:18
JavaScript有两种字符串。这检查了两种。
function isString (str)
{
return str instanceof String || typeof str === 'string';
}
这将始终抛出ReferenceError
,如果该参数不宣虽然typeof
不会抛出一个错误,因为JavaScript的由左到右(见Short-circuit evaluation)计算。
感谢:-)我尝试了decyclone的回答,并且有点麻烦。你的工作很棒。 – Bojangles 2010-12-11 11:58:28
感谢您的出色答案,您可以评论这与使用typeof相比如何? – 2013-01-15 16:49:04
@pure_code很好的解释http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/ – 2013-01-16 15:37:32