Ich bin mit dem 'binary-Parser' NPM-Modul in node.js und versuche, meine eigene "Assert" -Funktion zu verwenden, anstatt es inline zu liefern. Ich weiß nicht, ob das Problem der des 'binären Parsers' ist oder ob ich nicht weiß, Funktionen und/oder Funktionsreferenzen in Javascript zu nennen.Javascript mit Nicht-Inline-Funktion
Hier ist der Code, das funktioniert aber nicht, was ich will:
var Parser = require('binary-parser').Parser;
var data = new Buffer([0x23, 0x36, 0x74, 0x0e, 0x01, 0xff, 0xff]);
function range (min, val, max) {
return (min <= val && val <= max);
}
var dataParser = new Parser()
.endianess('little')
.uint8('inside_humidity', {assert: function(x){return(x <= 100);}})
.uint16('barometer', {assert: function(x){return(20000 <= x && x <= 32500);},
formatter: function(x) {return x/1000;}})
.uint16('wind_direction', {assert: function(x){return(x <= 360);}})
.uint16('crc');
console.log(dataParser.parse(data));
Ich mag würde meine eigene ‚Reichweite‘ Funktion wie folgt nennen:
.uint16('barometer',
{assert: range(20000, x, 32500),
formatter: function(x) {return x/1000;}})
aber ich bekomme:
ReferenceError: x is not defined
Also habe ich versucht:
assert: function(x){range(20000, x, 325000)}
und
{assert: function(x){range.bind(this, 20000, x, 32500)},
und erhalten:
ReferenceError: range is not defined
Ist es möglich, zu tun, was ich will?
Vielleicht http schreiben://stackoverflow.com/questions/12930272/javascript-closures-vs-anonymous- Funktionen ist eine interessante und hilfreiche Lektüre? – Dilettant
Vielen Dank und ich fand, dass dies noch hilfreicher (zumindest für mich): http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – kevdev