Type Conversion
The as operator is used for: conversion between primitive types (including Nullable and variant), down-casting of object types.
The conversion rules between primitive types are defined as follows. If the source type is a Nullable type and if the value is null, a run-time exception is raised under debug builds. The behavior is unspecified for release builds.
The result of conversion from a variant type depends on the result of the typeof operator applied to the variant.
Down-casting of an object type returns a reference to the casted object if successful, otherwise null.
| Source Type | Destination Type | Result |
|---|---|---|
| boolean | number | 0 if false, 1 if true |
| boolean | int | same as above |
| boolean | string | "false" if false, "true" if true |
| number | boolean | false if 0 or NaN, otherwise true |
| number | int | fractional part is removed, becomes 0 if NaN, may get rounded to between -231 and 231-1 |
| number | string | converted to string representation |
| int | boolean | false if 0, otherwise true |
| int | number | converted to number of same value |
| int | string | converted to string representation |
| string | boolean | false if the string is empty, otherwise true |
| string | number | 0 if the string is empty, a number if the string can be parsed as a string, otherwise NaN |
| string | int | equivalent to: as number as int |
| Result of typeof(variant) | Destination Type | Result |
|---|---|---|
| "undefined" | boolean | false |
| "undefined" | number | NaN |
| "undefined" | int | 0 |
| "undefined" | string | "undefined" |
| "null" | boolean | false |
| "null" | number | 0 |
| "null" | int | 0 |
| "null" | string | "null" |
| "boolean" | any primitive type | equivalent to the result of: boolean as type |
| "number" | any primitive type | equivalent to the result of: number as type |
| "string" | any primitive type | equivalent to the result of: string as type |
| "object" | any primitive type | depends on the actual type of the value |
| "object" | any object type | reference to the object if the value is an object of the specified type, otherwise null |