如何检查变量的类型是否为Boolean类型?
我的意思是,有一些替代方案,如:
if(jQuery.type(new Boolean()) === jQuery.type(variable))
//Do something..
Run Code Online (Sandbox Code Playgroud)
但这对我来说似乎不太好看.
有没有更清洁的方法来实现这一目标?
如何检查var是否是JavaScript中的字符串?
我试过这个但它不起作用......
var a_string = "Hello, I'm a string.";
if (a_string typeof 'string') {
// this is a string
}
Run Code Online (Sandbox Code Playgroud) 取自MDN
字符串文字(用双引号或单引号表示)和从非构造函数上下文中的String调用返回的字符串(即,不使用new关键字)是原始字符串.JavaScript会自动将基元转换为String对象,因此可以对原始字符串使用String对象方法.在要在原始字符串上调用方法或发生属性查找的上下文中,JavaScript将自动包装字符串原语并调用方法或执行属性查找.
因此,我认为(逻辑上)字符串基元上的操作(方法调用)应该比字符串对象上的操作慢,因为任何字符串基元method在应用于字符串之前都会转换为字符串对象(额外工作).
但在这个测试案例中,结果却相反.所述码块1的运行速度比较快的块-2代码,两个代码块在下面给出:
代码块-1:
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)
代码块-2:
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)
结果在浏览器中有所不同,但代码块-1总是更快.任何人都可以解释一下,为什么代码块-1比代码块-2快.
我需要使用ajax和FormData发送一些数据,因为我想发送一个文件和一些其他参数.我通常发送数据的方式是这样的:
$.ajax({
type: 'POST',
url: 'some_url',
dataType: 'json',
processData:false,
contentType:false,
data:{
Lvl_1-1: 'something',
Lvl_1-2: 'something',
Lvl_1-3: {
Lvl_1-3-1: "something",
Lvl_1-3-2: "something",
Lvl_1-3-3: "something",
},
},
...
});
Run Code Online (Sandbox Code Playgroud)
如果我不使用FormData(),我没有问题,但是当使用FormData()时,只有Lvl1上的数据是可以的,但是嵌套的任何东西都显示为像这样的字符串
<b>array</b> <i>(size=3)</i>
'Lvl1-1' <font color='#888a85'>=></font> <small>string</small>
<font color='#cc0000'>'Something'</font>
<i>(length=23)</i>
'Lvl1-2' <font color='#888a85'>=></font> <small>string</small>
<font color='#cc0000'>''Something''</font> <i>(length=3)</i>
'Lvl1-3' <font color='#888a85'>=></font> <small>string</small>
<font color='#cc0000'>'[object Object]'</font> <i>(length=17)</i>
Run Code Online (Sandbox Code Playgroud)
如果我使用FormData()来编码Lvl1-3中的数据,而不是[object Object]我得到[object FormData]
如何在Lvl1-3上获取数组而不是字符串?
注意:如果文件位于顶层(Lvl_1),我可以使用FormData()发送文件没有问题.我没有编写附加文件的代码,因为这不是问题,嵌套数据是.我刚刚提到了该文件,因为这就是我使用FormData()的原因.
在 JavaScript 中使用String()和有什么区别new String()?
console.log(String('word')); // word
console.log(new String('word')); // word
Run Code Online (Sandbox Code Playgroud) 有没有一种好方法可以检查数组中的所有索引是否都是字符串?
check(["asd", 123]); // false
check(["asd", "dsa", "qwe"]); // true
Run Code Online (Sandbox Code Playgroud) 直到最近,我还没有意识到JavaScript中有两种类型的字符串(和bool和数字):诸如的原语"blah"和诸如的对象new String("blah").
它们以非常"陷阱"的方式不同,其中最大的方式似乎是不同的typeof值("string"vs "object"),但存在许多其他差异,其中一些记录在MDN.
创建String对象没有意义,因为原始字符串也可以正常工作,JSHint甚至将此视为错误.所以我真的想假装String实例甚至不存在,并且只支持我的代码中的原始字符串.
这让我想知道:我可以通过调用一些返回字符串的标准API来获得一个惊喜的String实例吗?或者是否真的可以安全地假设,除非有人通过明确写作搞砸了,否则new String我永远不会看到其中的一个?
我将我的ISODate作为ISODate在mongo中使用,我想以字符串格式使用特定的日期时间格式.
这是ISODate:
ISODate("2020-04-24T11:41:47.280Z")
Run Code Online (Sandbox Code Playgroud)
预期结果:
"2020-04-24T11:41:47.280Z"
Run Code Online (Sandbox Code Playgroud)
我希望在mongodb上发生这种情况,因为我的许多服务都期望采用这种格式,而且我不想在所有服务中进行更改,因为它是一项繁琐的工作.
这个问题是[]的一个衍生产品,是Array的一个实例,但""不是String的实例
鉴于
"" instanceof String; /* false */
String() instanceof String; /* false */
new String() instanceof String; /* true */
Run Code Online (Sandbox Code Playgroud)
和
typeof "" === "string"; /* true */
typeof String() === "string"; /* true */
typeof new String() === "string"; /* false */
Run Code Online (Sandbox Code Playgroud)
然后,如果我有一个变量abc,我想知道它是否是一个字符串,我可以做
if(typeof abc === "string" || abc instanceof String){
// do something
}
Run Code Online (Sandbox Code Playgroud)
有没有更简单,更短和本地的方式,或者我必须创建自己的功能?
function isStr(s){
return typeof s === "string" || s instanceof String;
}
if(isStr(abc)){
// do something
}
Run Code Online (Sandbox Code Playgroud) 我正在按照教程建议检查对象是否为字符串而不是空,如下所示:
var s = "text here";
if ( s && s.charAt && s.charAt(0))
Run Code Online (Sandbox Code Playgroud)
据说如果s是字符串,那么它有一个方法charAt然后最后一个组件将检查字符串是否为空.
我尝试用其他可用的方法测试它,比如(typeof和instanceof)使用一些SO问题,这里和这里也是!!
所以我决定在Js Bin中测试它:jsbin代码如下:
var string1 = "text here";
var string2 = "";
alert("string1 is " + typeof string1);
alert("string2 is " + typeof string2);
//part1- this will succeed and show it is string
if(string1 && string1.charAt){
alert( "part1- string1 is string");
}else{
alert("part1- string1 is not string ");
}
//part2- this will show that it …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ramda,我需要一个纯函数,让我知道给定的输入是否是一个字符串,就像lodash一样_.isString.
在搜索到处后,我在Ramda找不到任何东西.所以我想知道,有没有一种方法,使用任何Ramda的现有功能,我可以创建一个isString函数?
我发现这可怕的限制,我不可能最后使用lodash:S
let regex = /[a-z]+/;
regex.test('a'); // true
regex.test(''); // false
regex.test(null); // true
regex.test(undefined); // true
Run Code Online (Sandbox Code Playgroud)
因此,基于此链接,它是 Ecmascript 中的错误 - /\S/.test(null) 返回 true?,看起来空值被强制为字符串“空”。跆拳道?为什么要这样设计?我也找不到有关此行为的任何文档。有没有办法返回false空/未定义的值(在检查“空”等时没有硬编码)?