Я использую модуль NPM 'binary-parser' в node.js и пытаюсь использовать свою собственную функцию assert, вместо того, чтобы поставлять ее inline. Я не знаю, является ли проблема проблемой «двоичного-парсера», или это связано с моим незнанием вызовов функций и/или ссылок функций в javascript.javascript using non-inline function
Вот код, который работает, но не то, что я хочу:
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));
Я хотел бы назвать своим собственным «Диапазон» функции, как это:
.uint16('barometer',
{assert: range(20000, x, 32500),
formatter: function(x) {return x/1000;}})
Но я получаю:
ReferenceError: x is not defined
Так что я пробовал:
assert: function(x){range(20000, x, 325000)}
и
{assert: function(x){range.bind(this, 20000, x, 32500)},
и получите:
ReferenceError: range is not defined
Можно ли делать то, что я хочу?
Может быть, Http://stackoverflow.com/questions/12930272/javascript-closures-vs-anonymous-func является интересным и полезным читать? – Dilettant
Спасибо, и я нашел, что это еще более полезно (по крайней мере для меня): http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – kevdev