IT评测·应用市场-qidao123.com

标题: js的数据范例转换 [打印本页]

作者: 卖不甜枣    时间: 2025-3-23 12:27
标题: js的数据范例转换
强制转换

所谓强制转换就是使用Number()、String()、Boolean等方法举行强制转换
  1. console.log(Number('886'));     // 886
  2. console.log(Number('ui886'));       // NaN
  3. console.log(String(123456));        // '123456'
  4. console.log(String(false));     // 'false'
  5. console.log(Boolean(1));        // true
  6. console.log(Boolean('false'));      // true
复制代码
引用数据范例的转换过程

这三种方法都有各自的转换过程

  1. const a = {
  2.     m: 'abc'
  3. };
  4. console.log(Number(a)); // NaN
复制代码
让我们改写这两个方法
  1. const a = {
  2.     m: 'abc',
  3.     valueOf() {
  4.         return 3;
  5.     },
  6.     toString() {
  7.         return 5;
  8.     }
  9. };
  10. console.log(Number(a)); // 3
复制代码
可以看到再执行valueOf方法时已得到了须要的number数据范例的值,以是直接返回了,会跳过toString的执行
  1. const a = {
  2.     m: 'abc',
  3.     toString() {
  4.         return 5;
  5.     }
  6. };
  7. console.log(Number(a)); // 5
复制代码
当valueOf方法也无法得到数值范例数据,才会执行toString方法

  1. const a = {
  2.     m: {}
  3. };
  4. console.log(String(a)); // '[object Object]'
复制代码
以下代码可以看出,先执行的是toString方法
  1. const a = {
  2.     m: {},
  3.     valueOf() {
  4.         return 'ww';
  5.     },
  6.     toString() {
  7.         return 'aa';
  8.     }
  9. };
  10. console.log(String(a));  // 'aa'
复制代码

自动转换

js本身是弱范例的语言,赋值时可以是任意数据范例,以是经常会出现不同数据范例的数据举行运算的情况
自动转字符串

  1. console.log('123' + 123);       // '123123'
  2. console.log('123' + true);      // '123true'
复制代码
使用加号运算时,存在字符串时会变成字符串拼接,其他范例的数据就会自动转为字符串数据范例,而如果其他的数据范例为引用数据范例是,就会强制转换,即使用String()
  1. console.log('123' + {});  // '123[object Object]'
  2. console.log('123' + []);  // '123'
  3. console.log('123' + [1, 2, 3]);  // '1231,2,3'
复制代码
  数组与对象不同,当数值只有一个值或空数组时,强制转换会变为谁人值的字符串或空字符串,若有多个值时,逗号也会加入转换
  自动转数值

除了加法运算符,其他运算符基本都会把其他数据自动转换为数值范例
  1. console.log('123' - '12');  // 111
  2. console.log(true * '12');   // 12
  3. console.log('45' / 5);  // 9
  4. console.log('2' ** 2);  // 4
复制代码
  注意: null转为数值时为0,而undefined转为数值时为NaN。
  NaN与任何数值运算都为NaN
碰到转换不了的结果就会是NaN
  1. console.log('abc123' - '12');  // NaN
  2. console.log(+'aaa');   // NaN
  3. console.log(-null);  // -0
复制代码
自动转布尔值

JavaScript 碰到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean()函数。
因此除了以下五个值,其他都是自动转为true。

总结

js的数据范例转换分为两种,强制转换与自动转换


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4