# JS Lib

## Overview

This class provides essential JavaScript constants and utility functions like Infinity, NaN, and undefined, along with URI encoding/decoding (encodeURI, decodeURIComponent) and string parsing (parseFloat, parseInt). It includes utilities like isFinite and isNaN for value validation and supports dynamic code evaluation through eval.

## **Returned Types**

[Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean),[String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string),[Date](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/date),[Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number),[Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array),[Function](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/function),[IterableValue](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/iterablevalue),[Iterator](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/iterator),[JSON](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/json),[Map](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/map),[Math](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/math),[Namespace](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/namespace),[QName](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/qname),[RegExp](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/regexp),[Set](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/set),\[Special Operators]\(./special operators.md),[Statements](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/statements),[XML](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/xml),[XMLList](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/xmllist),[BigInt](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/bigint),[Promise](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/promise),

## Properties Summarized

| Type                                                                         | Name                    | Summary                              |
| ---------------------------------------------------------------------------- | ----------------------- | ------------------------------------ |
| [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number) | [Infinity](#infinity)   | Numeric value representing infinity. |
| [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number) | [NaN](#nan)             | Value representing Not-a-Number.     |
| [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) | [undefined](#undefined) | The value undefined.                 |

## Methods Summarized

| Type                                                                           | Name                                                             | Summary                                                                                                      |
| ------------------------------------------------------------------------------ | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)   | [decodeURI(encodedURI)](#decodeuri-encodeduri)                   | Decodes a URI previously encoded with encodeURI or another similar routine.                                  |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)   | [decodeURIComponent(encodedURI)](#decodeuricomponent-encodeduri) | Decodes a URI component previously created by encodeURIComponent or by a similar routine.                    |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)   | [encodeURI(URI)](#encodeuri-uri)                                 | Encodes a URI by replacing certain characters with escape sequences.                                         |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)   | [encodeURIComponent(URI)](#encodeuricomponent-uri)               | Encodes a URI component by replacing all special characters with their corresponding UTF-8 escape sequences. |
| [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object)   | [eval(expression)](#eval-expression)                             | Evaluates JavaScript code passed as a string.                                                                |
| [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean) | [isFinite(n)](#isfinite-n)                                       | Returns true if the given number is a finite number.                                                         |
| void                                                                           | [isNaN(value)](#isnan-value)                                     | The NaN property indicates that a value is 'Not a Number'.                                                   |
| [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean) | [isXMLName(name)](#isxmlname-name)                               | Returns true if the given name can be used as a valid name for an XML element or attribute.                  |
| [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number)   | [parseFloat(text)](#parsefloat-text)                             | Makes a floating point number from the starting numbers in a given string.                                   |
| [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number)   | [parseInt(text)](#parseint-text)                                 | Makes a integer from the starting numbers in a given string in the base specified.                           |
| [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number)   | [parseInt(text, radix)](#parseint-text-radix)                    | Makes a integer from the starting numbers in a given string in the base specified.                           |

## Properties Detailed

### Infinity

Numeric value representing infinity.

**Type**\
[Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number)

**Sample**

```js
Infinity
```

### NaN

Value representing Not-a-Number.

**Type**\
[Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number)

**Sample**

```js
NaN
```

### undefined

The value undefined.

**Type**\
[Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object)

**Sample**

```js
undefined
```

## Methods Detailed

### decodeURI(encodedURI)

Decodes a URI previously encoded with encodeURI or another similar routine.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **encodedURI** ;

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)

**Sample**

```js
var str = "http://www.mysite.com/my code.asp?name=[cool]";
var encoded = encodeURI(str);
var decoded = decodeURI(encoded);
application.output(encoded);//http://www.mysite.com/my%20code.asp?name=%5bcool%5d
application.output(decoded);//http://www.mysite.com/my code.asp?name=[cool]
```

### decodeURIComponent(encodedURI)

Decodes a URI component previously created by encodeURIComponent or by a similar routine.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **encodedURI** ;

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)

**Sample**

```js
var str = "my code.asp?name=[cool]";
var encoded = encodeURIComponent(str);
var decoded = decodeURIComponent(encoded);
application.output(encoded); //my%20code.asp%3fname%3d%5bcool%5d
application.output(decoded); //my code.asp?name=[cool]
```

### encodeURI(URI)

Encodes a URI by replacing certain characters with escape sequences.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **URI** ;

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)

**Sample**

```js
var str = "http://www.mysite.com/my code.asp?name=[cool]";
var encoded = encodeURI(str);
var decoded = decodeURI(encoded);
application.output(encoded);//http://www.mysite.com/my%20code.asp?name=%5bcool%5d
application.output(decoded);//http://www.mysite.com/my code.asp?name=[cool]
```

### encodeURIComponent(URI)

Encodes a URI component by replacing all special characters with their corresponding UTF-8 escape sequences.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **URI** ;

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)

**Sample**

```js
var str = "my code.asp?name=[cool]";
var encoded = encodeURIComponent(str);
var decoded = decodeURIComponent(encoded);
application.output(encoded); //my%20code.asp%3fname%3d%5bcool%5d
application.output(decoded); //my code.asp?name=[cool]
```

### eval(expression)

Evaluates JavaScript code passed as a string. Returns the value returned by the evaluated code.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **expression** ;

**Returns:** [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object)

**Sample**

```js
eval("var x = 2 + 3;");
application.output(x); // prints: 5.0
```

### isFinite(n)

Returns true if the given number is a finite number.

**Parameters**

* [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number) **n** ;

**Returns:** [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean)

**Sample**

```js
application.output(isFinite(1)); // prints: true
application.output(isFinite(Infinity)); // prints: false
application.output(isFinite(isNaN)); // prints: false
```

### isNaN(value)

The NaN property indicates that a value is 'Not a Number'.

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value** ;

**Returns:** void

**Sample**

```js
isNaN( value )
```

### isXMLName(name)

Returns true if the given name can be used as a valid name for an XML element or attribute.\
This was implemented by the Rhino engine as part of Ecma-357 which was meanwhile withdrawn.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **name** ;

**Returns:** [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean)

**Sample**

```js
application.output(isXMLName("good_name")); // prints: true
application.output(isXMLName("bad name")); // because of the space, prints: false
```

### parseFloat(text)

Makes a floating point number from the starting numbers in a given string.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **text** ;

**Returns:** [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number)

**Sample**

```js
parseFloat('string')
```

### parseInt(text)

Makes a integer from the starting numbers in a given string in the base specified.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **text** ;

**Returns:** [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number)

**Sample**

```js
parseInt('0774')
```

### parseInt(text, radix)

Makes a integer from the starting numbers in a given string in the base specified.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **text** ;
* [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number) **radix** ;

**Returns:** [Number](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/number)

**Sample**

```js
parseInt('0774' , 8)
```

***
