Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查参数是否为字符串_Javascript_Jquery_Variable Types - Fatal编程技术网

Javascript 检查参数是否为字符串

Javascript 检查参数是否为字符串,javascript,jquery,variable-types,Javascript,Jquery,Variable Types,我有一个JavaScript函数,它使用document.getElementById()。我想将它升级为能够使用jQuery选择器($(this).parent().find(“blah”)),但是它需要能够使用原始方法以实现向后兼容性。是否有一种方法可以测试传递给函数的参数是字符串(因此我可以使用getElementById)还是jQuery对象(不是字符串) 我可以使用.length,但这是确定参数是否为字符串的故障保护方法吗 只要我可以测试字符串,jQuery分支就可以进入一个else—

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

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

只要我可以测试字符串,jQuery分支就可以进入一个
else
——我不需要绝对确保它不是字符串,尽管如果它也是jQuery,测试它会很好

谢谢


詹姆斯

我想你要找的就是instanceOf。请看这篇文章:

我想instanceOf就是您要找的。请参阅本文:

以下代码返回true:

"somestring".constructor == String

以下代码返回true:

"somestring".constructor == String

这就是你想要的吗

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

} else {


}

而且
length
绝对不是一个好办法。数组也会有一个长度属性,更不用说任何自定义对象了。

这就是你想要的吗

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

} else {


}

而且
length
绝对不是一个好办法。数组也将有一个length属性,更不用说任何自定义对象了。

JavaScript有两种字符串。这检查了这两种情况

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

如果参数未声明,这将始终抛出一个
ReferenceError
,尽管
typeof
不会抛出错误,因为JavaScript从左到右求值(请参见)。

JavaScript有两种字符串。这检查了这两种情况

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

如果参数未声明,这将始终抛出一个
ReferenceError
,尽管
typeof
不会抛出错误,因为JavaScript从左到右求值(请参见)。

这只适用于转换为对象的字符串,例如通过
新字符串(“测试”)
,非原语。这仅适用于转换为对象的字符串,例如通过
新字符串(“测试”)
,不是原语。+1告诉我不要使用
.length
-谢谢你的建议:-)+1告诉我不要使用
.length
-谢谢你的建议:-)+1比我的答案好,因为这也适用于转换为对象的字符串。+1比我的答案好,因为这也适用于转换为对象的字符串。谢谢:-)我试过了除旋流器的回答有点问题。不过你的答案很好。谢谢你的回答,你能评论一下这与使用typeof相比有什么不同吗?@pure_code很好的解释谢谢:-)我试过了decyclone的答案,但有点麻烦。不过你的答案很好。谢谢你的回答,你能评论一下这与使用typeof相比有什么不同吗?@pure\u代码很好的解释