JavaScript中的原始类型转换详解

JavaScript是一种动态类型的脚本语言,它具有自动进行类型转换的特性。在JavaScript中,存在着许多基本数据类型,如布尔型、数字型、字符串型等,同时也有对象类型。在不同的场景中,我们可能需要进行不同类型之间的转换,这就涉及到原始类型转换的问题。

基本数据类型之间的转换

转布尔

在JavaScript中,有一些规则定义了如何将其他类型转换为布尔类型。以下是一些常见的规则:

  • 数字:除了0和NaN,其他所有数字都被转换为true。
  • 字符串:除了空字符串("")之外,其他所有字符串都被转换为true。
  • 对象:所有对象都被转换为true。
  • false,null,underfined,转布尔都为false
javascript 复制代码
Boolean(0);        // false
Boolean(42);       // true
Boolean("");       // false
Boolean("hello");  // true
Boolean({});       // true
console.log(Boolean(false));  // false
console.log(Boolean(undefined)); // false
console.log(Boolean(null)); // false
console.log(Boolean(NaN));  // false

转数字类型

JavaScript中,数字类型转换的规则比较灵活。可以通过parseIntparseFloat``Number 等函数来实现字符串到数字的转换。同时,一元运算符+也可以将字符串转换为数字。

  • 在Number中只有字符串为全数字是转换为数字,其他字符串都为NaN
  • 空和false为0, true为1
javascript 复制代码
//使用一元加号或`parseInt`函数可以将字符串转换为数字。
var strNum = "42";
var numFromStr1 = +strNum; // 42 
var numFromStr2 = parseInt(strNum); //
//使用Number()转数字
console.log(Number());//0
console.log(Number(false));//0
console.log(Number(true))//1
console.log(Number('123')) //123
console.log(Number('hallo')) //NaN
console.log(Number(undefined))// NaN

转字符串

字符串型转换通常使用 String() 函数,或者通过字符串拼接的方式实现:

  • 注意string()为'' 其他直接转为字符串
javascript 复制代码
console.log(String());  // ''
console.log(String(undefined));'undefined'
console.log(String(null));'null'
console.log(String(true));'true'
console.log(String(false));'false'
console.log(String(123));'123'
console.log(String(NaN));'NaN'

转对象

lua 复制代码
console.log(Object('hello'))// String{'hello'}
// console.log(Object('underfined'))// {}
// console.log(Object('null'))// {}

对象转原始类型

对象类型转换涉及到 toString()valueOf() 方法,这两个方法定义在 Object 类型中。而 valueOf() 方法只对包装类类型有效。

toString() 在js中有多个版本:

  1. {}.toString() // "[object class]"
  2. 数组的toString()会将数组中的所有元素转化成字符串并以逗号拼接
  3. 函数的toString()会将整个函数体以字符串形式返回
  4. Date的toString()会将整个date以字符串形式返回

对象转字符串 ToPrimitive(obj, String)

  • 判断obj是基本类型,则返回
  • 否则 调用 toString 方法,如果得到原始类型,则返回
  • 否则 调用 valueOf 方法,如果得到原始类型,则返回
  • 否则 报类型错误

对象转数字 ToPrimitive(obj, Number)

  • 判断obj是基本类型,则返回
  • 否则 调用 valueOf 方法,如果得到原始类型,则返回
  • 否则 调用 toString 方法,如果得到原始类型,则返回
  • 否则 报类型错误

一元运算符 +

一元运算符+可以将操作数转换为数字。

arduino 复制代码
javascriptCopy code
+"42";   // 42
+"3.14"; // 3.14

二元运算符 +

二元运算符+在不同情境下有不同的行为。如果其中一个操作数是字符串,则进行字符串拼接;否则,将两个操作数转换为数字相加。

perl 复制代码
javascriptCopy code
"Hello" + " " + "World";   // "Hello World"
1 + "2";                   // "12"
1 + 2;                     // 3

相等运算符 =====

==相等运算符会进行隐式类型转换,而===严格相等运算符不进行隐式类型转换。

ini 复制代码
"42" == 42;    // true,发生隐式类型转换
"42" === 42;   // false,不发生隐式类型转换

原始类型转换表

JavaScript中的原始类型转换表可以帮助理解不同类型之间的转换规则。以下是一个简单的表格:

从\到 布尔 数字 字符串 对象
布尔 - false=0, true=1 false="" true="true" 见下文
数字 false=0, true=1 - 数字.toString() 见下文
字符串 false="" true="true" 数字.toString() - 见下文
对象 见下文 对象.valueOf()或对象.toString() 对象.valueOf()或对象.toString() -

这个表格展示了不同类型之间的常见转换规则,但在实际使用时,要根据具体情况灵活应用。

结论

JavaScript中的原始类型转换是一个复杂而有趣的话题。了解这些转换规则对于编写健壮且可读性高的代码是非常重要的。在实际编码中,需要注意不同情境下的转换规则,以避免出现意外的行为。   大家把答案写在评论区吧 喜欢的来个关注 点赞 这个也是以后写文章的动力所在 谢谢大家能观看我的文章 咱下期再见 拜拜

相关推荐
吃杠碰小鸡11 分钟前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone17 分钟前
C#使用Aspose.Words把 word转成图片
前端·c#·word
Serene_Dream35 分钟前
JVM 并发 GC - 三色标记
jvm·面试
xjt_090136 分钟前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农1 小时前
Vue 2.3
前端·javascript·vue.js
夜郎king1 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
辰风沐阳1 小时前
JavaScript 的宏任务和微任务
javascript
夏幻灵2 小时前
HTML5里最常用的十大标签
前端·html·html5
冰暮流星2 小时前
javascript之二重循环练习
开发语言·javascript·数据库
Mr Xu_2 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js