- This is not a "safe JavaScript eval"!
- This library only mimics
eval()functionality to some point. - It always returns the value of given expression. You always need to provide context in which it will be executed (context must be an Object).
- Pure JavaScript! No dependencies! ^^,
- Minified version is only ~16KB
- one-argument operators:
! ...~ ...+ ...- ...typeof ...
- two-argument operators:
... . ...(member accessor)... * ...... / ...... % ...... + ...... - ...... >= ...... <= ...... > ...... < ...... instanceof ...... in ...... === ...... !== ...... == ...... != ...... && ...... || ...
- three-argument operator:
... ? ... : ...
- Strings, Numbers (both Integers and Floats) and Booleans
- Node: Interpolation in Strings is not planned for now to be implemented
- properties:
undefinednullNaNInfinity
- grouping (paranthesis)
- calling methods
- support nested methods (e.g.
foo(1, bar(item.a, item.b)))
- support nested methods (e.g.
- accessing allowed global Object:
DateMathNumberStringArrayObject
- mixing above
- one-argument operators:
new(I don't know if it's good idea?)
It's UMD package, so you can use it both: client-side (browser) and server-side (node.js).
Probably you want to just intall it with npm:
npm install --save mevalAnd then just require it:
const meval = require('meval');But if you don't want to use npm, you can always simply download eg. minified version right from Releases.
/**
* @param {String} expression Expression to be parsed
* @param {Object} context Context for expression
*/
meval(expression, context)<< meval('item.a + item.b * 5', { item: { a: 2, b: 3 } })
>> 17- Marek Sierociński - marverix
See also the list of contributors who participated in this project.
This project is licensed under the ISC License - see the LICENSE file for details.