JavaScript/Notes/TypeConversion: Difference between revisions
Line 8: | Line 8: | ||
For example: | For example: | ||
<source lang="javascript"> | <source lang="javascript"> | ||
if( | var n = 0; | ||
if(n) { // false | |||
} | } | ||
Line 15: | Line 16: | ||
</source> | </source> | ||
All numbers boolean-convert to true except for the following: <code>+/-0</code> and <code>NaN</code> | |||
Boolean operators use type-conversion for the evaluation of their left hand side operands. | Boolean operators use type-conversion for the evaluation of their left hand side operands. | ||
<source lang="javascript"> | <source lang="javascript"> | ||
1 & | 1 && 0; // 1. | ||
"" || 0; // 0. | "" || 0; // 0. | ||
null || undefined; // undefined. | null || undefined; // undefined. |
Revision as of 00:28, 6 January 2014
There are five primitive types in JavaScript: Null, Undefined, Boolean, String, Number.
Various operations in JavaScript require conversion to and from primitive values.
Converting to Boolean
When evaluating any expression that requires a boolean value, the expression must be converted into a boolean using the internal [[ToBoolean]].
For example: <source lang="javascript"> var n = 0; if(n) { // false }
var t = !""; // Empty string is falsy. var f = !"f"; // Non-empty strings are not falsy. </source>
All numbers boolean-convert to true except for the following: +/-0
and NaN
Boolean operators use type-conversion for the evaluation of their left hand side operands. <source lang="javascript"> 1 && 0; // 1. "" || 0; // 0. null || undefined; // undefined. undefined || 1; // 1. NaN || 0; // 0; </source>
All falsy values: <source lang="javascript"> false "" null undefined 0 NaN </source>
Converting to String
When either operand is a string, the concatenation is performed.
Whenever the +
operator is used, the operands must be converted into primitive values. First, the interpreter calls the object's valueOf to get a primitive value. If the result is a primitive value, then that value is used. Example:
<source lang="javascript"> var o = {
valueOf : function() { return 1; }
}; o + 1; // 2. </source>
Otherwise, the object's toString is called. <source lang="javascript"> var o = { toString : function() { return "1"; } } o + 1; // "11". </source>
Converting to Number
Converting strings is a very common requirement and many methods can be used. Any mathematical operator except the concatenation/addition operator will force type-conversion to number.
Converting to Object
Property access operation on string, number, and boolean primitives results in the creation of a temporary object. <source lang="javascript"> true.toString(); // Boolean Object. 1.2.valueOf(); // Number object. " foo ".trim(); // String Object.
// null.toString(); // TypeError // undefined.toString(); // TypeError </source>
See also: http://dhtmlkitchen.com/how-property-access-works/