数据类型的转换(变量)——
2020-11-05 13:52:01
变量的数据类型只有在表达式运行后才知道,因为控制数据类型的是表达式而不是一开始就定义的数据
可以通过自动或者是手动强制转换数据类型
手动强制转换数据类型函数:Number()、String()、Boolean()--------显示转换
Number():
- 比printInt()严格,只要有一个字符无法转为数值,整个字符串就会被转为NaN
parseInt('42 cats') // 42 Number('42 cats') // NaN
都会自动过滤前导和后缀的空格
- array对象的时候,
先调用对象自身的valueof()方法,将对象先转换为原始类型值,再用Number()转换;
对象还是对象值的话,用toString()转换成原始类型值,再用Number()转换;
对象还是对象值的话,输出NaN
Number({a: 1}) // NaN Number([1, 2, 3]) // NaN Number([5]) // 5
String():
- 将任意类型的值转化成字符串;
- 原始类型值:
数值:转化成相应的字符串;
字符串:不变;
underfined:‘underfined’;
null:‘null’;
boolean:‘true’ or 'false' - 对象:返回类型字符串;
String({a: 1}) // "[object Object]"
- 数组:返回数组字符串;
Boolean():
- 将任意类型的值转为布尔值;
- underfined、null、0、NaN、''都为false;其他为true
自动转换数据类型-----------------------------------------------------------------隐式转换
- 不同类型的数据运算;
123 + 'abc' // "123abc"
- 对非布尔值类型的数据求布尔值
if ('abc') { console.log('hello') } // "hello"
- 对非数值类型的值使用一元运算符:+ -
+ {foo: 'bar'} // NaN - [1, 2, 3] // NaN
如果一个数据类型既能转换为数值数据类型,也能转换为字符串数字类型,那么优先转换为数值数据类型;
由于自动转换数据类型不稳定,
所以要求在定义数据类型的时候,优先使用函数强制转换数据类型;
你的代码量决定了你的薪资水平!