JavaScript学习--2. 数据类型(2)
2014-12-20 15:40
197 查看
一、 不可变的原始值和可变的对象引用
原始值(undefined, null, 布尔值, 数字, 字符串)
对象(数组, 函数)
原始值是不可更改的。原始值的比较是值的比较。 只有在它们的值相等时它们才相等。
对象是可变的(它们的值是可修改的), 对象的比较: 即使两个对象包含同样的属性及相同的值。 它们也不是相等的。各个索引元素完全相等的两个数组也不相等, 只有两个对象同时引用同一个基对象时,它们才相等。
二、 类型转换
原始值到对象的转换。 通过调用String(), Number(), Boolean()构造函数。转换为它们各自的包装对象
null 和 undefined 属于例外。 当将它们用在期望是一个对象的地方都会造成一个类型错误(TypeError)异常。而不会执行正常的转换
下边例子的值,都为true
null == undefined
"0" == 0; //比较前字符串转换成数字
0 == false //布尔值转换成数字
"0" == false //字符串和布尔值都转换成数字
显式类型转换
Number("3"); //=> 3
String(false); // "false" 或使用false.toString()
Boolean([]);
// true
Object(3);
// new Numbers(3);
除了null, undefined之外的任何值都具有toString()方法
"+" 一个操作数为字符串。 它将会把另外一个操作数转换成为字符串。
一元“+”运算符, 将其操作数转换为数字。
Number类定义了toString()方法可以接收表示转換基数的可选参数。 如果不指定此参数。转换规则将是基于十进制。 同样, 亦可以将数字转换为其他进制数。
toFixed() 根据小数点后的指定位数将数字转换为字符串,
toExponential() 使用指数记数法将数字转换为指数形式的字符串, 其中小数点前只有一位, 小数点后面的位数则由参数指定(也就是说有效期
toPrecision() 根据指定的有效数字位置将数字转换成字符串
Number()转换一个字符串成数字。 这个方法只能基于十进制进行转变换。 并且不能出现非法的尾随字符。
parseInt(), parseFloa和()函数更加灵活, parseInt()只解析整数。 parseFloat()可以解析整数和浮点数。
4000
三、 对象转换为原始值
对象-> 布尔值: 所有对象都转换为true
对象->字符串&数字: 调用转换对象的一个方法完成
所有的对象继承了两个转换方法。
第一个是toString(). 作用是返回一个反映这个对象的字符串。
[1,2,3].toString();
//=> "1,2,3"
(function(x){f(x);}).toString(); //=> "function(x){\n f(x);\n}"
/\d+/g.toString();
// "/\\d+/g"
new Date(2010,0,1).toString();
//=> "Fri Jan 01 2010 00:00:00 GMT-0800(PST)"
第二个是valueOf(). 如果存在任意原始值, 它就默认将对象转换为表示它的原始值。 对象是复合值, 而且大多数对象无法真正表示为一个原始值。 因此默认的valueOf()方法简单地返回对象本身,
而不是返回一个原始值。
var d = new Date(2010,0,1); //2010年1月1日
d.valueOf(); //=> 12623...
时间戳
对象到字符串的转换经过了如下步骤:
1 如果对象具有toString()方法 则调用这个方法。 如果它返回一个原始值。 JavaScript将这个值转换为字符串(如果本身不是字符串的话), 并返回这个字符串结果。
2 如果对象没有toString()方法 或者这个方法并不返回一个原始值 那么JavaScript会调用valueOf()方法,。 如果存在这个方法, 则JavaScript调用它 如果返回值是原始值。JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果
原始值(undefined, null, 布尔值, 数字, 字符串)
对象(数组, 函数)
原始值是不可更改的。原始值的比较是值的比较。 只有在它们的值相等时它们才相等。
对象是可变的(它们的值是可修改的), 对象的比较: 即使两个对象包含同样的属性及相同的值。 它们也不是相等的。各个索引元素完全相等的两个数组也不相等, 只有两个对象同时引用同一个基对象时,它们才相等。
二、 类型转换
原始值到对象的转换。 通过调用String(), Number(), Boolean()构造函数。转换为它们各自的包装对象
null 和 undefined 属于例外。 当将它们用在期望是一个对象的地方都会造成一个类型错误(TypeError)异常。而不会执行正常的转换
下边例子的值,都为true
null == undefined
"0" == 0; //比较前字符串转换成数字
0 == false //布尔值转换成数字
"0" == false //字符串和布尔值都转换成数字
显式类型转换
Number("3"); //=> 3
String(false); // "false" 或使用false.toString()
Boolean([]);
// true
Object(3);
// new Numbers(3);
除了null, undefined之外的任何值都具有toString()方法
"+" 一个操作数为字符串。 它将会把另外一个操作数转换成为字符串。
一元“+”运算符, 将其操作数转换为数字。
Number类定义了toString()方法可以接收表示转換基数的可选参数。 如果不指定此参数。转换规则将是基于十进制。 同样, 亦可以将数字转换为其他进制数。
toFixed() 根据小数点后的指定位数将数字转换为字符串,
toExponential() 使用指数记数法将数字转换为指数形式的字符串, 其中小数点前只有一位, 小数点后面的位数则由参数指定(也就是说有效期
toPrecision() 根据指定的有效数字位置将数字转换成字符串
Number()转换一个字符串成数字。 这个方法只能基于十进制进行转变换。 并且不能出现非法的尾随字符。
parseInt(), parseFloa和()函数更加灵活, parseInt()只解析整数。 parseFloat()可以解析整数和浮点数。
4000
三、 对象转换为原始值
对象-> 布尔值: 所有对象都转换为true
对象->字符串&数字: 调用转换对象的一个方法完成
所有的对象继承了两个转换方法。
第一个是toString(). 作用是返回一个反映这个对象的字符串。
[1,2,3].toString();
//=> "1,2,3"
(function(x){f(x);}).toString(); //=> "function(x){\n f(x);\n}"
/\d+/g.toString();
// "/\\d+/g"
new Date(2010,0,1).toString();
//=> "Fri Jan 01 2010 00:00:00 GMT-0800(PST)"
第二个是valueOf(). 如果存在任意原始值, 它就默认将对象转换为表示它的原始值。 对象是复合值, 而且大多数对象无法真正表示为一个原始值。 因此默认的valueOf()方法简单地返回对象本身,
而不是返回一个原始值。
var d = new Date(2010,0,1); //2010年1月1日
d.valueOf(); //=> 12623...
时间戳
对象到字符串的转换经过了如下步骤:
1 如果对象具有toString()方法 则调用这个方法。 如果它返回一个原始值。 JavaScript将这个值转换为字符串(如果本身不是字符串的话), 并返回这个字符串结果。
2 如果对象没有toString()方法 或者这个方法并不返回一个原始值 那么JavaScript会调用valueOf()方法,。 如果存在这个方法, 则JavaScript调用它 如果返回值是原始值。JavaScript将这个值转换为字符串(如果本身不是字符串的话),并返回这个字符串结果
相关文章推荐
- Javascript学习笔记1 数据类型
- Javascript学习笔记一 之 数据类型
- JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
- (4)JavaScript学习笔记 - 数据类型和值(续)
- php程序员学习javascript:第一章:javascript基本语法:数据类型
- Javascript学习指南(第2版)笔记(一) Script、数据类型和变量、操作符和语句
- JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
- JavaScript学习笔记-- Boolean 数据类型
- 自我学习而已——javascript——数据类型部分
- Javascript学习笔记一 之 数据类型
- 学习笔记——JavaScript数据类型和变量
- JavaScript学习总结_二.数据类型
- Javascript学习笔记一基本数据类型与变量声明
- 学习javascript(二)-调试器与数据类型
- javascript权威指南 学习笔记之javascript数据类型
- javascript高级程序设计(第三版)-第三章 数据类型-学习笔记
- Javascript学习笔记1-基本数据类型
- 【学习笔记】JavaScript——基本语法与数据类型
- Javascript学习笔记(二)Javascript核心之数据类型与值
- JavaScript学习笔记-- String数据类型