2468工作室_成都网站开发_网页设计_二次开发_推广服务_二四六八工作室 我们一直坚信只有用心去做才能得到好的作品!
您当前的位置:主页 > 知识分享 >
快乐前端:JavaScript 学习知识点总结(三)
作者: 2468工作室 发布日期:2020-07-01 16:09 查看次数:

1、JS数据类型转换:JavaScript 能够根据运算环境自动转换值的类型,以满足运算需要。但是在很多情况下需要开发者手动转换数据类型,以控制运算过程。
 
2、转换为字符串1:当值与空字符串相加运算时,JavaScript 会自动把值转换为字符串。
例如:
var n = ?;(定义n的类型↓)
n = n + "";
console.log(typeof n); //返回类型为 string
(1)var n = 数字,返回数字本身。
(2)var n = 布尔值,返回字符串 "true" 或 "false"。
(3)var n = 数组,返回数组元素列表,以逗号分隔。如果是空数组,则返回空字符串。
(4)var n = 函数,返回函数的具体代码字符串。
(5)var n = 内置类型函数,则只返回构造函数的基本结构,省略函数的具体实现代码。而自定义类型函数与普通函数一样,返回函数的具体实现代码字符串。
(6)var n = 内置静态函数,则返回 [object Class] 格式的字符串表示。
(7)var n = 对象直接量,则返回字符串为 "[object object]"。
(8)var n = 自定义类的对象实例,则返回字符串为 "[object object]"。
(9)var n = 内置对象实例,具体返回字符串将根据参数而定。(正则表达式对象会返回匹配模式字符串,时间对象会返回当前GMT格式的时间字符串,数值对象会返回传递的参数值字符串或者0等。)
 
3、转换为字符串2:当为简单的值调用 toString() 方法时,JavaScript 会自动把它们封装为对象,然后再调用 toString() 方法,获取对象的字符串表示。
例如:
var a = 123456;
a.toString();
document.write(a);  //返回字符串“123456”
 
4、转换为数字模式字符串toString() 方法会直接把数字转换为数字字符串。如果没有设置参数,则 toString() 方法会转换为十进制数值之后再输出,如果有参数,则根据参数把数值转换为对应进制的值之后,再输出为字符串表示。
例如:
var a = 1.000;
var b = 0.0001;
var c = 1e-6;
var d = 1e-7;
var e = 0x10;
var f = 10;
document.write(a.toString());  //返回字符串“1”
document.write(b.toString());  //返回字符串“0.0001”
document.write(c.toString());  //返回字符串“0.000001”
document.write(d.toString());  //返回字符串“1e-7”
document.write(e.toString());  //返回字符串“16”
document.write(f.toString(2));  //返回字符串“1010”
 
5、转换为小数格式字符串toFixed() 能够把数值转换为字符串,并显示小数点后的指定位数。toExponential() 方法专门用来把数字转换为科学计数法形式的字符串。toPrecision() 方法可以指定有效数字的位数转换为以科学计数法形式的字符串。(省略部分采用四舍五入的方式进行处理)
例如:
var a = 12345678;
document.write(a.toFixed(2));  //返回字符串“12345678.00”
document.write(a.toExponential(4));  //返回字符串“1.2346e+8”,4表示小数位
document.write(a.toPrecision(4));  //返回字符串“1.235e+8”,4表示有效数位
 
6、转换为数字parseInt() 是一个全局方法,它可以把值转换为整数,也支持基模式,由第二个参数指定。parseFloat() 也是一个全局方法,它可以把值转换为浮点数,即它能够识别第一个出现的小数点,而第二个小数点被视为非法。解析过程与 parseInt() 方法相同。
例如:
var d = 010;  //八进制数字字符串
var e = 0x10;  //十六进制数字字符串
document.write(parseInt("123abc"));  //返回数字123
document.write(parseInt("1.73"));   //返回数字1
document.write(parseInt(".123"));   //返回值NaN,0处字符不是有效数字,则直接返回 NaN。
document.write(parseInt(d));  //返回十进制数字8,以0开头的数字字符串,会把它作为八进制数字处理
document.write(parseInt(e));  //返回十进制数字16,以0x开头的数字字符串,会把它作为16进制数字处理
document.write(parseInt("10",8));  //把八进制数字 10 转换为十进制整数,为8
document.write(parseInt("010"));  //把默认基模式数字 010 转换为十进制整数为10
document.write(parseInt("010",8));  //把八进制数字 010 转换为十进制整数为8
 
document.write(parseFloat("1.234.5"));  //返回数值 1.234
document.write(parseFloat("010"));  //返回数值 10,parseFloat() 的参数必须是十进制形式的字符串
document.write(parseFloat("0x10"));  //返回数值 0
 
7、转换为布尔值可以使用双重逻辑非把值转换为正确的布尔值。或者使用 Boolean() 函数可以强制把值转换为布尔值。
例如:
document.write(!!null);  //返回false
document.write(!!undefined);  //返回false
document.write(!![]);  //返回true
 
document.write(Boolean(0));  //返回false
document.write(Boolean(1));  //返回true
 
8、转换为对象使用 new 命令调用 String,Number,Boolean 类型函数执行实例化操作,并把值“123”传进去,使用 new 运算符创建实例对象,简单值分别被封装为字符串型对象、数值型对象和布尔型对象。
例如:
var n = "123";
document.write(typeof new String(n));  //返回Object
document.write(typeof new Number(n));  //返回Object
document.write(typeof new Boolean(n));  //返回Object
document.write(Object.prototype.toString.call(new String(n)));  //返回[object String]
document.write(Object.prototype.toString.call(new Number(n)));  //返回[object Number]
document.write(Object.prototype.toString.call(new Boolean(n)));  //返回[object Boolean]

9、转换为简单值-逻辑运算:在逻辑运算环境中,所有复合型数据对象转换为布尔值都为 true。
例如:
var b = new Boolean(false);  //封装false为对象
var n = new Number(0);  //封装数字0为对象
var s = new String("");  //封装空字符串对象
b && console.log(b);  //如果b为true,则显示 "false"
n && console.log(n);  //如果n为true,则显示 "0"
s && console.log(s);  //如果s为true,则显示"
 
10、转换为简单值-数值运算:在数值运算环境中,对象会尝试调用 valueOf() 方法;如果不成功,则再调用 toString() 方法,获取一个值。然后尝试把该值转换为数字,如果成功,则取用该值参与运算;如果转换失败,则取用 NaN 参与运算。
例如:
var b = new Boolean(true);  //把true封装为对象
console.log(b.valueOf());  //测试该对象的值为true
console.log(typeof(b.valueOf));  //测试值得类型为boolean
var n = b-0;  //投放到数值运算环境中
console.log(n);  //返回值为1
console.log(typeof n);  //测试类型,则为number
 
11、转换为简单值-字符串运算:在字符串运算环境中,对象会调用 toString() 方法,获取对象的字符串表示,以此作为转换的值。
 
12、转换为简单值-转换数组:数组转换为简单值时,会调用 toString() 方法,获取一个字符串表示,然后根据具体运算环境,再把该字符串转换为对应类型的简单值。
(如果为空数组,则转换为空字符串。如果仅包含一个元素,则取该元素值。如果包含多个元素,则转换为多个元素的值组合的字符串,并以逗号分隔。)
 
13、转换为简单值-转换对象:当对象与字符串进行加运算时,则直接转换为字符串,执行连接操作; 当对象与数值进行加运算时,会尝试把对象转换为数值,然后参与求和运算,如果不能转换为有效数值,则执行字符串连接操作; 当对象与数值进行比较运算时,则尝试把对象转换为数值,然后参与比较运算,如果不能转换为有效数值,则执行字符串比较运算; 当对象与字符串进行比较运算时,则直接转换为字符串,进行比较操作。
例如:
var a = new Boolean(true);  //布尔值封装为对象
var b = new String("b");  //字符串封装为对象
document.write(a+0);  //返回数值1
document.write(b+0);  //返回字符串"b0"
document.write(a+"");  //返回字符串"true"
document.write(a>0);  //返回true,以数值形式进行比较
document.write(b>0);  //返回false,以字符串形式进行比较

14、转换为简单值-转换函数:函数转换为简单值时,会调用 toString() 方法,获取字符串表示(对于普通函数,则返回的是函数代码本身)。然后根据不同运算环境,再把该字符串表示转换为对应类型的值。
例如:
var f = function(){return 5; };
document.write(String(f));  //返回字符串function (){return 5; }
document.write(Number(f));  //返回NaN
document.write(Boolean(f));  //返回true
 
15、强制类型转换Boolean(value):把参数值转换为布尔型值;Number(value):把参数值转换为数字;String(value):把参数值转换为字符串。
例如:
document.write(String(true));  //返回字符串"true"
document.write(String(0));  //返回字符串"0"
document.write(Number("1"));  //返回数值1
document.write(Number(true));  //返回数值1
document.write(Number("a"));  //返回NaN
document.write(Boolean(1));  //返回true
document.write(Boolean(""));  //返回false
 
16、自动类型转换JavaScript 能够根据具体运算环境自动转换参与运算的值得类型。
值(value) 字符串操作环境 数字运算环境 逻辑运算环境 对象操作环境
undefined "undefined" NaN false Error
null "null" 0 false Error
非空字符串 不转换 字符串对应的数字值NaN true String
空字符串 不转换 0 false String
0 "0" 不转换 false Number
NaN "NaN" 不转换 false Number
Infinity "Infinity" 不转换 true Number
Number.POSITIVE_INFINITY "Infinity" 不转换 true Number
Number.NEGATIVE_INFINITY "-Infinity" 不转换 true Number
-Infinity "-Infinity" 不转换 true Number
Number.MAX_VALUE "1.7976931348623157e+308" 不转换 true Number
Number.MIN_VALUE "5e-324" 不转换 true Number
其他所有数字 "数字的字符串值" 不转换 true Number
true "true" 1 不转换 Boolean
false "false" 0 不转换 Boolean
对象 toString() valueOf()
或toString() 或 NaN
true 不转换