JavaScript类型转换
Posted 每天都要喝白开水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript类型转换相关的知识,希望对你有一定的参考价值。
js的类型分为
- 值类型(基本类型): Number Boolean Null String Undefined 新增加 Symbol
- 引用数据类型 Object Array Function
强类型的语言遇到函数引数类型和实际调用类型不符合的情况经常会直接出错或者编译失
强类型 偏向于不容忍隐式类型转换。
弱类型 偏向于容忍隐式类型转换。
区分一下
静态类型: 编译的时候就知道每-个变量的类型,因为类型错误而不能做的事情是语法错误。
动态类型:编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。运行的时候还会被发现。不在编译期做类型检查,在运行期做
typeof null === \'object 在 javascript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null 也因此返回 "object"。
console.log(typeof null === \'object\');//true
显示类型转换
显示类型转换比较简单,通过 JS 提供的一些函数,可以直接进行转换
- 转化为 Number 类型:Number() / parseFloat() / parseInt()
- 转化为 String 类型:String() / toString()
- 转化为 Boolean 类型: Boolean()
注意
- Number类定义的toString()方法可以接受表示转换基数的可选参数,如果不指定此参数,转换规则将是基于十进进制。
- js中对象到字符串的转换经过了如下步骤:
**如果对象具有toString()方法,则调用这个方法。如果它返回一个基本类型值,js将这个值转换为字符串,并返回这个字符串。 - 如果对象没有toString()方法,或者这个方法返回的不是一个基本类型值,那么js将调用valueOf()方法。如果存在这个方法,则调用,如果返回值是基本类型值,转换为字符串并返回
- 否则,js无法从toString()或valueOf()获得一个基本类型值,此时将会抛出类型错误异常
- undefined、null、false、+0、-0、NaN、"" 只有这些 toBoolean() 是 false ,其余都为 true
1.转布尔
let a=\'da\';
let b=false;
console.log(Boolean(b)); //false
console.log(Boolean(a));//true
console.log(Boolean()) // false
console.log(Boolean(true)); //true
console.log(Boolean("da"));
console.log(Boolean(false)) // false
console.log(Boolean(undefined)) // false
console.log(Boolean(null)) // false
console.log(Boolean(+0)) // false
console.log(Boolean(-0)) // false
console.log(Boolean(NaN)) // false
console.log(Boolean("")) // false
隐式转换
JS 的隐式转换主要涉及的是两个操作符, + 和 ==
1.+一元运算符
- 将操作数转换为Number,但是如果后面不是 Number 的话,就会将调用 ToNumber 方法。
- 只要遇见了字符串,其他的就会转化为字符串
2.-运算符
-将操作数转换为Number,并且要反转正负
原文链接:https://juejin.cn/post/6844904095774425101#heading-4
强制类型转换的一些用法
将日期显示转换为数字
一元运算符 + 的另一个常见用途是将日期(Date)对象强制类型转换为数字,返回结果为Unix时间戳。
var time = +new Date()
练习题
"number" + 15 + 3 // "number153"
\'+\' 运算符按从左到右的顺序的执行,所以优先执行 “number” + 15, 把 15 转为 string 类型,得到 “number15” 然后同理执行 “number15” + 3
15 + 3 + "number" // "18number"
15 + 3 先执行,运算符两边都是 number 类型 ,不用转换,然后执行 18 + “number” 最终得到 “18number”
(未完)这里不太懂为啥
\'91\'-1 //90
91-\'1\'//90
与加法不同
以上是关于JavaScript类型转换的主要内容,如果未能解决你的问题,请参考以下文章