js数据类型详细解析

强制类型转换:指将一个数据类型强制转换为其他的数据类型

通常三种转换

转换为字符串类型

转换为数字型

转换为布尔型

转换为字符串类型

(1)toString()方法

调用被转换数据类型的toString()方法 语法:变量.to String( let res = data.toString())

该方法不会影响到原变量,它会将转换的结果返回 语法:str=变量.to.String()

注意:null和undefined这两个值没有toString的方法,如果调用他们会报错

javascript 复制代码
        // 简单(一般、基本)数据类型:Number,String,Boolean,Undefined,Null
        // 数据类型的相互转换
        // 将数据转成string类型  Number Boolean,Undefined,Null
        let data = 1
        data = true
        data = undefined 
        data = null
        // 方式一:toString()    变量名.toString()
        //null, undefined无法通过.toString()方式转换为string类型
        // let res = data.toString()
        console.log('data转换前', data, typeof data);
        console.log('data转换后', res, typeof res);
(2)String()

调用String()函数,并将被转换的数据作为参数传递给函数 语法:String(变量)

使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString的方法

与to string的区别:但对于null和undefined,就不会调用toString()方法, 它会将null直接转换为"null", 将undefined 直接转换为"undefined"

javascript 复制代码
        // 简单(一般、基本)数据类型:Number,String,Boolean,Undefined,Null
        // 数据类型的相互转换
        // 将数据转成string类型  Number Boolean,Undefined,Null
        let data = 1
        data = true
        data = undefined 
        data = null
        // 方式一:toString()    变量名.toString()
        //null, undefined无法通过.toString()方式转换为string类型
        // let res = data.toString()
        // 方式二:String(变量名)
        // let res = String(data)
     
        console.log('data转换前', data, typeof data);
        console.log('data转换后', res, typeof res);
(3)拼接字符串(隐式转换)

和字符串拼接的结果都是新字符串 语法:变量+''

javascript 复制代码
        // 简单(一般、基本)数据类型:Number,String,Boolean,Undefined,Null
        // 数据类型的相互转换
        // 将数据转成string类型  Number Boolean,Undefined,Null
        let data = 1
        data = true
        data = undefined 
        data = null
        // 方式一:toString()    变量名.toString()
        //null, undefined无法通过.toString()方式转换为string类型
        // let res = data.toString()
        // 方式二:String(变量名)
        // let res = String(data)
        // 方式三:隐式转换   语法:变量+''   任意类型数据+字符串=新的字符串
        let res = data + ''
        console.log('data转换前', data, typeof data);
        console.log('data转换后', res, typeof res);

转换为数字型(重点)

(1) 使用Number()函数

字符串-->数字

1:如果是纯数字的字符串,则直接将其转换为数字

2:如果字符串中有非法的数字的内容,则转换为NaN

3:如果字符串是一个空串,或者全是空格的字符串,则转换为0

布尔值--->数字

true--1 false--0

Null --->数字 0

Undefined --->数字 NaN

(2) parseInt(变量) 取有效整数

(3) parseFloat() 取有效浮点数

javascript 复制代码
 方式一、调用Number(变量)函数
     let s1 = "hello"; //字符串类型
     s1 = "123";
     s1 = "";
     s1 = "          ";
     s1 = true; //布尔值类型
     s1 = false;
     s1 = undefined;
     s1 = null;
     console.log("原值:", s1);
     console.log("原值类型:", typeof s1);
     let res = Number(s1);
     console.log("转换之后值:", res);
     console.log("转换之后值类型:", typeof res);
     方式二 parseInt(变量)  取有效整数*/
     方式三 parseFloat()  取有效浮点数 */
      注意:如果对非String使用parseFloat()跟parseInt(),
  它会先将其转换为String,然后再操作 */
     let s1 = "123abc";
     s1 = "abc123";
     s1 = "123";
     s1 = true;
     s1 = undefined;
     s1 = "1.23a";
     s1='1a1.2bc'
     console.log("原值:", s1);
     console.log("原值类型:", typeof s1);
     let res = parseInt(s1);
     let res = parseFloat(s1);
     console.log("转换之后值:", res);
     console.log("转换之后值类型:", typeof res);

(4)算术运算 -0 *1 /1 隐式转换

javascript 复制代码
let s1 = "123abc";4
     console.log("原值:", s1);
     console.log("原值类型:", typeof s1);
     let res = s1 / 1;
     console.log("转换之后值:", res);
     console.log("转换之后值类型:", typeof res);

(5)正号

javascript 复制代码
  let s1 = "123";
     s1=true
     s1=false
     s1=undefined
     s1=null
     console.log("原值:", s1);
     console.log("原值类型:", typeof s1);
     let res = +s1;
     console.log("转换之后值:", res);
     console.log("转换之后值类型:", typeof res);

小练习

javascript 复制代码
  小练习
    let age = +prompt("请输入你的年龄");
     console.log(Number(age) + 1);
     console.log(parseInt(age) + 1);
     console.log(parseFloat(age) + 1);
     console.log(age*1 + 1);
    console.log(age + 1);

转换为布尔型

Boolean()函数

将其他类型转成布尔值

  • 数字-->布尔 除了0跟NaN是false,其他的都是true
  • 字符串-->布尔 除了空串是false,其余都是true
  • null和undefined都会转换为false
  • 对象会转换为true

面试题:转为布尔值为false的六种情况

// 0,NaN,'',undefined,null,false

(1)Boolean(变量)函数转布尔值

javascript 复制代码
number,string,undefined,null
       方式一、 Boolean(变量)函数转布尔值
       let s1 = 1;
       s1=2
       s1=0
       s1=-2
       s1=NaN
       s1='hello'
       s1='0'
       s1='      '
       s1=''
       s1=undefined
       s1=null
       s1={}
       s1=[]
       s1=function(){}
       s1=false
       console.log("原值:", s1);
       console.log("原值类型:", typeof s1);
       let res = Boolean(s1);
       console.log("转换之后值:", res);
       console.log("转换之后值类型:", typeof res);

(2)两次取反 双非 !! 隐式转换

javascript 复制代码
let s1 = "";
      s1 = "abc";
      s1 = undefined;
      s1 = null;
      s1 = 123;
      s1 = 0;
      console.log("原值:", s1);
      console.log("原值类型:", typeof s1);
      let res = !!s1;
      console.log("转换之后值:", res);
      console.log("转换之后值类型:", typeof res);
相关推荐
weixin_462446232 小时前
Python用Flask后端解析Excel图表,Vue3+ECharts前端动态还原(附全套代码)
前端·python·flask·echats
Kratzdisteln2 小时前
【1902】0120-3 Dify变量引用只能引用一层
android·java·javascript
满栀5852 小时前
jQuery 递归渲染多级树形菜单
前端·javascript·jquery
闲蛋小超人笑嘻嘻2 小时前
Flexbox 属性总结
前端·css
TOPGUS2 小时前
谷歌将移除部分搜索功能:面对AI时代的一次功能精简策略
前端·人工智能·搜索引擎·aigc·seo·数字营销
运筹vivo@2 小时前
攻防世界: ics-05
前端·web安全·php
qq_338032922 小时前
Vue/JS项目的package.json文件 和java项目里面的pom文件
java·javascript·vue.js·json
不思念一个荒废的名字2 小时前
【黑马JavaWeb+AI知识梳理】Web前端开发 - Vue3 / ElementPlus
前端
月明长歌2 小时前
Selenium中隐式等待(Implicit Wait)和显式等待(Explicit Wait)的区别
前端·javascript·selenium