我正在尝试使用fingerprintjs2 javascript库,以获取浏览器指纹。
下面的代码可以正常工作:
new Fingerprint2().get(function (result) {
var output = result;
document.write(output);
});
但是,我想在这个块之外设置一个变量,以便以后使用,例如:
var output;
new Fingerprint2().get(function (result) {
output = result;
});
document.write(output);
但是在这个例子中我得到了输出:
undefined
我猜这与作用域有关,所以有没有办法在外部作用域中设置变量,或者我是否需要将以下所有代码放在这个函数调用中?
我读过其他关于获得嵌套函数值的问题,但在这种情况下似乎都不起作用。
你不应该这样做。我正在用ES6编写代码。
let Fingerprint2Obj = new Fingerprint2().get(function (result) {
let obj = {
output: result
}
return obj;
});
你不能在函数外调用var,如果你通过对象或字符串发送它,则使用实例。document . write (Fingerprint2Obj.output);
这不起作用,因为您在异步get返回之前打印输出。
试试这个:
var output;
var callbackFunction = function(result) {
output = result;
document.write(output);
//do whatever you want to do with output inside this function or call another function inside this function.
}
new Fingerprint2().get(function (result) {
// you don't know when this will return because its async so you have to code what to do with the variable after it returns;
callbackFunction(result);
});