找出变量是否为字符串的最佳方法是什么(同样,数字,布尔值等)是什么?
通常你会发现:
function isString(value) {
return typeof value === 'string';
}
Run Code Online (Sandbox Code Playgroud)
但人们忘记了也可以直接使用创建字符串对象var foo = new String("bar");
- 这是否是一个好主意是完全不同的事情.
那么去这里的方式是什么?我能想到 - 并且已经看到 - 各种方法(有些简化):
// option 1
function isString(value) {
return (typeof value === 'string') ||
/^function String\(\)/.test(value.constructor + '');
}
Run Code Online (Sandbox Code Playgroud)
要么
// option 2
function isString(value) {
return (typeof value === 'string') ||
(value.constructor === String);
}
Run Code Online (Sandbox Code Playgroud)
要么
// option 3
function isString(value) {
return (typeof value === 'string') ||
value instanceof String;
}
Run Code Online (Sandbox Code Playgroud)
有没有"最佳"的方式来解决这个问题?或者它们都相同?
好的,我有点难过.我可能错过了一些明显的东西,但显然我只是看不到森林的树木:
我试图调用一个JavaScript函数,期望它的参数是一个数组,即它检查if (arg instanceof Array)...
不幸的是,我(或Rhino)似乎无法创建这样的数组:
Context cx = Context.enter();
Scriptable scope = cx.initStandardObjects();
String src = "function f(a) { return a instanceof Array; };";
cx.evaluateString(scope, src, "<src>", 0, null);
Function f = (Function) scope.get("f", scope);
Object[] fArgs = new Object[]{ new NativeArray(0) };
Object result = f.call(cx, scope, scope, fArgs);
System.out.println(Context.toString(result));
Context.exit();
Run Code Online (Sandbox Code Playgroud)
唉,result
是的false
.
我在这里错过了什么?
编辑:
再多一点信息:两者[] instanceof Array
并按照人们的预期new Array() instanceof Array
返回true
.如果我向数组添加元素,它们会在JavaScript代码中显示正确的索引(数字,从零开始):
NativeArray a = new NativeArray(new Object[]{ …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,客户端通过Socket.io连接到nodejs服务器并订阅各种事件.这些订阅相当复杂,无法使用Socket.IO的频道功能处理.
这意味着客户端需要跟踪其订阅,并且可能必须在断开连接时重新订阅.不幸的是,我不太确定Socket.IO如何处理重新连接以及客户端发生的透明程度.
所以这就是问题:如何模拟连接失败并强制Socket.IO重新连接?
德语最常用的词性标注集是STTS标记集.我需要每个标签的解释的英文翻译.不是语言学家,我觉得自己感觉不舒服(更不用说合格了).
谷歌什么都没有,所以任何帮助都表示赞赏.