ECMAScript 基础(一)
ECMAScript 是 JavaScript 的重要核心组件
变量类型
ECMAScript 的变量类型分为原始值和引用值,与C#中的值类型和引用类型大同小异
只不过值得一提的是,ECMAScript中的 String 类型被视为原始值类型
ECMAScript 有五种原始值类型 Undefined 、Null 、 Boolean 、 Number 和 String
typeof 运算符
用于检查变量的类型
var
Temp
=
"
abc
"
;
alert( typeof Temp); // 输出String
Temp = 95 ;
alert( typeof Temp); // 输出Number
/**/ /*
* 唯一不用的是 null 类型,虽然他是原始型
* 但是它的返回值是 object 这实际上是JavaScript
* 最初的一个错误,然后被ECMAScript沿用了
*/
alert( typeof Temp); // 输出String
Temp = 95 ;
alert( typeof Temp); // 输出Number
/**/ /*
* 唯一不用的是 null 类型,虽然他是原始型
* 但是它的返回值是 object 这实际上是JavaScript
* 最初的一个错误,然后被ECMAScript沿用了
*/
Undefined 类型
var
Temp1;
alert( typeof Temp1); // 都将输出Undefined
alert( typeof Temp2);
/**/ /*
* 当变量声明后没有被初始化,或者变量根本没有定义
* 那么,他的类型将是 Undefined
*/
function returnUndefined() ... {
}
alert(returnUndefined() == Undefined);
/**/ /*
* 当一个函数没有明确的返回值时,返回的是Undefined
*/
alert( typeof Temp1); // 都将输出Undefined
alert( typeof Temp2);
/**/ /*
* 当变量声明后没有被初始化,或者变量根本没有定义
* 那么,他的类型将是 Undefined
*/
function returnUndefined() ... {
}
alert(returnUndefined() == Undefined);
/**/ /*
* 当一个函数没有明确的返回值时,返回的是Undefined
*/
Null 类型
值 Undefined 实际上是从 null 派生来的
所以 ECMAScript 将这两种类型视为相等
Number 类型
var
num
=
5
;
//
被视为32位整型
num = 5.0 ; // 被视为64位浮点型 但是是运算之前,被认为是 String 类型
num = 05 ; // 8进制
num = 0x5 ; // 16进制
/**/ /*
* 不管是8进制,还是16进制
* 所有的数学运算,返回都是10进制进行运算
* alert(num); 返回都是10进制
*/
num = 3.14e7 ; // 3.14 * 10^7
/**/ /*
* 当计算的结果大于 Number 的最大数(Number.MAX_VALUE)时
* 返回的结果为Number.POSITIVE_INFINITY(正无穷大)
* 或结果为Number.NEGATIVE_INFINITY(负无穷大)
*/
isFinite() 函数用于判断数是否是无穷大(无论是正无穷大还是负无穷大)
var Temp1 = Number.MAX_VALUE;
var Temp2 = 2 ;
alert(isFinite(Temp1 * Temp2)); // 返回 false 表示此结果超出范围
num = 5.0 ; // 被视为64位浮点型 但是是运算之前,被认为是 String 类型
num = 05 ; // 8进制
num = 0x5 ; // 16进制
/**/ /*
* 不管是8进制,还是16进制
* 所有的数学运算,返回都是10进制进行运算
* alert(num); 返回都是10进制
*/
num = 3.14e7 ; // 3.14 * 10^7
/**/ /*
* 当计算的结果大于 Number 的最大数(Number.MAX_VALUE)时
* 返回的结果为Number.POSITIVE_INFINITY(正无穷大)
* 或结果为Number.NEGATIVE_INFINITY(负无穷大)
*/
isFinite() 函数用于判断数是否是无穷大(无论是正无穷大还是负无穷大)
var Temp1 = Number.MAX_VALUE;
var Temp2 = 2 ;
alert(isFinite(Temp1 * Temp2)); // 返回 false 表示此结果超出范围
NaN非数情况 一般都是由于 String 或 Boolean 转换成 Number 失败造成
类型转换
转换成字符串
toString()方法
var
Temp
=
true
;
alert( typeof Temp); // 输出 Boolean
alert( typeof Temp.toString()); // 输出 String
Temp = 95 ;
alert( typeof Temp); // 输出 Number
alert( typeof Temp.toString()); // 输出 String
// 将数据按照哪种进制输出
Temp = 95 ;
alert(Temp.toString( 2 )); // 以8进制输出 1011111
alert(Temp.toString( 8 )); // 以8进制输出 137
alert(Temp.toString( 16 )); // 以8进制输出 5f
alert( typeof Temp); // 输出 Boolean
alert( typeof Temp.toString()); // 输出 String
Temp = 95 ;
alert( typeof Temp); // 输出 Number
alert( typeof Temp.toString()); // 输出 String
// 将数据按照哪种进制输出
Temp = 95 ;
alert(Temp.toString( 2 )); // 以8进制输出 1011111
alert(Temp.toString( 8 )); // 以8进制输出 137
alert(Temp.toString( 16 )); // 以8进制输出 5f
转换成数字
整型
parseInt()方法
var
num;
num = parseInt( " 1234abcd " ); // 返回1234 将检查到第五个数时类型不同跳出转换
num = parseInt( " 0xA " ); // 返回 10
num = parseInt( " 22.5 " ); // 因为是 parseInt() 所以返回整型 22
num = parseInt( " blue " ); // 返回NaN
parseInt 方法还有一个重载方法
var num;
num = parseInt( " AF " , 16 ); // 将AF以16进制形式转换成整型 175
num = parseInt( " 10 " , 2 ); // 将10以2进制形式转换成整形 2
num = parseInt( " 10 " , 8 ); // 将10以8进制形式转换成整形 8
num = parseInt( " 1234abcd " ); // 返回1234 将检查到第五个数时类型不同跳出转换
num = parseInt( " 0xA " ); // 返回 10
num = parseInt( " 22.5 " ); // 因为是 parseInt() 所以返回整型 22
num = parseInt( " blue " ); // 返回NaN
parseInt 方法还有一个重载方法
var num;
num = parseInt( " AF " , 16 ); // 将AF以16进制形式转换成整型 175
num = parseInt( " 10 " , 2 ); // 将10以2进制形式转换成整形 2
num = parseInt( " 10 " , 8 ); // 将10以8进制形式转换成整形 8
浮点型
parseFloat()方法
var
num;
num = parseInt( " 1234abcd " ); // 返回1234.0
num = parseInt( " 0xA " ); // 返回 NaN
num = parseInt( " 22.5 " ); // 返回 22.5
num = parseInt( " 22.5.3 " ); // 返回 22.5
num = parseInt( " 0908 " ); // 返回 908
num = parseInt( " blue " ); // 返回NaN
num = parseInt( " 1234abcd " ); // 返回1234.0
num = parseInt( " 0xA " ); // 返回 NaN
num = parseInt( " 22.5 " ); // 返回 22.5
num = parseInt( " 22.5.3 " ); // 返回 22.5
num = parseInt( " 0908 " ); // 返回 908
num = parseInt( " blue " ); // 返回NaN
强制类型转换
var
Temp
=
...;
Boolean(Temp);
Number(Temp);
String(Temp);
Boolean(Temp);
Number(Temp);
String(Temp);