JavaScript进阶系列-类型转换、隐式类型转换
栏目: JavaScript · 发布时间: 5年前
内容简介:ECMAScript 的 Boolean 值、数字和字符串的原始值都是伪对象,这意味着它们可以使用原型对象上面的属性和方法。ECMAScript 定义所有对象都有 toString() 方法,无论它是伪对象,还是真对象。ECMAScript 提供了两种把非数字的原始值转换成数字的方法,即 parseInt() 和 parseFloat() 。 只有对 String 类型调用这些方法,它们才能正确运行;对其他类型返回的都是 NaN。
ECMAScript 的 Boolean 值、数字和字符串的原始值都是伪对象,这意味着它们可以使用原型对象上面的属性和方法。
ECMAScript 定义所有对象都有 toString() 方法,无论它是伪对象,还是真对象。
let obj = {name:'obj'}; obj.toString(); // [object Object] let arr = [1,2]; arr.toString(); // "1,2" function func(){} func.toString() // "function func(){}" false.toString() // "false" 复制代码
参数 | 结果 |
---|---|
undefined | "undefined" |
null | "null" |
boolean | "true" 或者 "false" |
number | 数字作为字符串。比如,"1.765" |
string | 无需转换 |
[] | "" |
[5,2] | "5,2" |
{} | "[object Object]" |
Symbol() | "Symbol()" |
转换为数字
ECMAScript 提供了两种把非数字的原始值转换成数字的方法,即 parseInt() 和 parseFloat() 。 只有对 String 类型调用这些方法,它们才能正确运行;对其他类型返回的都是 NaN。
参数 | 结果 |
---|---|
undefined | NaN |
null | +0 |
boolean | true被转换为1,false转换为+0 |
number | 无需转换 |
string | 由字符串解析为数字。例如,"324"被转换为324 |
[] | +0 |
[5] | 5 |
{} | NaN |
Symbol | 报错 |
转换为 Boolean
参数 | 结果 |
---|---|
undefined | false |
null | false |
boolean | 无需转换 |
number | +0,-0转换为false,其他为true |
string | ''为false,其他为true |
[] | true |
{} | true |
Symbol | true |
强制类型转换
ECMAScript 中可用的 3 种强制类型转换如下:
- Boolean(value) - 把给定的值转换成 Boolean 型;
- Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
- String(value) - 把给定的值转换成字符串;
Boolean() 函数
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。如果该值是空字符串、数字 0、undefined 或 null、NaN,它将返回 false。
Number() 函数
Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。
String() 函数
String() 它可把任何值转换成字符串。
隐式类型转换
JavaScript 默认自动转换,没有任何警告 隐式类型转换常见场景
自动转换 Boolean
例如 if 语句 或者其他需要 Boolean 的地方
if (表达式){} 复制代码
字符串
- 运算符其中一个操作数是字符串的话,会进行连接字符串的操作。
1+'2' // '12' 复制代码
false
Boolean('false') // true Boolean('undefined') // true // 这里他们都是字符串 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Release It!
Michael T. Nygard / Pragmatic Bookshelf / 2007-03-30 / USD 34.95
“Feature complete” is not the same as “production ready.” Whether it’s in Java, .NET, or Ruby on Rails, getting your application ready to ship is only half the battle. Did you design your system to......一起来看看 《Release It!》 这本书的介绍吧!