七.类型转换
JS是一种弱类型语言,在定义变量时不需要指定类型,一个变量可以存储任何类型的值
JS数据类型分为简单类型与复杂类型,简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型
简单类型
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型,包括:string ,number,boolean,undefined,null
复杂类型
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型,通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等
数据类型转换
什么是数据型转换
使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗来说,就是把一种数据类型的变量转换成另外一种数据类型
通常会实现3种方式的转换:
-
转换为字符串类型
-
转换为数字型
-
转换为布尔型
转换为字符串
转换为数字型
转换为布尔型
JS表达式运算判断的时候,参与计算的数据类型不合格,进行类型转换
一.转 Number (场景: 数学运算( - * / % … 特殊的加号))
- 看上去像数字就可以转数字
- 特殊的 (Infinity 科学计数法 不同进制)
- 转不了 一定也是数值类型 值: NaN
- undefined => NaN
- null => 0
二.转 String (场景: 如果加法运算中没有数字参与, 一定是 转字符串拼接)
一般情况下 可以直接加 “” 最终的值
-
true => “true” false => “false”
-
null => “null” undefined => “undefined”
console.log(String(null)) //"null"
console.log(String(undefined)) //"undefined"
对象 怎么转的
在一般情况下 对象转字符串的结果是 "[object Object]"
let obj = {a:123123,b:12312323}
console.log(String(obj)) // "[object Object]"
console.log({} + {}) //"[object Object][object Object]"
分类:
函数(约定了名字和执行内容的一个整体)
function foo(){
asdasdajksd
}
let result = String(foo)
怎么写的就怎么显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yw7o9Ubg-1615612818013)(C:/Users/%E7%AB%B9%E9%9D%92%E6%9A%AE%E9%9B%A8/AppData/Roaming/Typora/typora-user-images/1588066945624.png)]
数组 [123,123,64,75,789,45]
需要去掉 中括号(不管有多少个)
let arr = [123,123,64,75,789,45];
console.log(String(arr)); //123,123,64,75,789,45
补充一句: 这些都是假象, 真实的转字符串的方法:
调用了它自己的 toString 的方法 (万物皆对象, 是对象就有toString方法)
1.包装对象
2.原型
证明: 对象转字符串就是用的 toString()
let a = {
toString: function () {
return "abc" // "abc" 就是函数执行的返回结果
}
}
console.log(a + "")
let arr = [1, 2, 3]
console.log(arr.toString()) //"1,2,3" //天呐!证明成立
转 Boolean
六大假值
其余都是真