第三章 JavaScript 值类型使用

本文深入探讨了JavaScript中数据类型的判断与转换方法,详细介绍了字符串、数字、数组等常见数据类型的处理技巧,包括字符串连接、截取、检索、替换等操作,以及数字的基本函数、类型转换和数学计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.typeof判断数据类型

JavaScript中可以使用typeof来判断数据类型,但是typeof也有一些自己的缺点,比如不能会将数组类型判断为object,遇到这种问题时可以使用原型链进行判断。

  let arr = []
  let obj = {}
  console.log(typeof arr,typeof obj)//object object
  console.log(arr instanceof Array,obj instanceof Array)//true false

2.字符串连接

字符串连接可以使用最简单的 “+” 进行连接;也可使用写在 “ ` ` ” (键盘上方数字1前面的点)中进行连接,推荐使用这种方式连接字符串。${}中可以填写变量,函数或者表达式。

  let year = "xxxx年"
  let name = "weizhuren"
  console.log(name + "出生于" + year)//weizhuren出生于xxxx年
  console.log(`${name}出生于${year}`)//weizhuren出生于xxxx年

3.tag标签模板

可以使用tag标签来定义模板。

  let year = "xxxx年"
  let name = "weizhuren"
  tag`${name}出生于${year}。`
  function tag(strings,...vars) {
    console.log(vars)//["weizhuren", "xxxx年"]
    console.log(strings)//"", "出生于", "。"
  }

4.字符串基本函数

一些字符串基本函数的使用。

  let name = "weiZHUren"
  console.log(name.length)//9 获取字符串长度
  console.log(name.toUpperCase())//WEIZHUREN 将字符串全部大写
  console.log(name.toLowerCase())//weizhuren 将字符串全部小写
  let msg = "  erbihouke   "
  console.log(msg.length)//14
  console.log(msg.trim().length)//9 去除字符串空格后输出字符串长度

5.字符串的截取操作

字符串中slice、substr和substring的细微区别。

  let msg = "erbihoukeweizhuren"
  //slice substr substring
  console.log(msg.slice(1,3))//第一个参数:从第几位开始截取,第二个参数:截取到第几位   rb
  console.log(msg.substring(1,3))//第一个参数:从第几位开始截取,第二个参数:截取到第几位 rb
  console.log(msg.substr(1,3))//第一个参数:从第几位开始截取,第二个参数:截取几位 rbi
  //第一个参数使用负数的情况
  console.log(msg.slice(-3,-1))//第一个参数:从第几位开始截取,第二个参数:截取到第几位 re
  console.log(msg.substring(-3,1))//第一个参数:从第几位开始截取,第二个参数:截取到第几位 e
  console.log(msg.substr(-3,1))//第一个参数:从第几位开始截取,第二个参数:截取几位 r

6.检索字符串的技巧

对于字符串的检索,可以使用的方法有很多,比如includes、indexOf、startsWith

  let msg = "erbihoukeweizhuren"
//string.include第一个参数:需要查找的字符;第二个参数:从第几位开始查找。返回一个boolean值  
  console.log(msg.includes("e",3))// true
//string.indexOf第一个参数:需要查找的字符;第二个参数:从第几位开始查找。返回查询到第一个字符所在的位置,没有找到返回-1
  console.log(msg.indexOf("e",2))// 8
//string.lastIndexOf第一个参数:需要查找的字符;第二个参数:从第几位开始查找。返回查询到第一个字符所在的位置,没有找到返回-1;他和indexOf的区别就是他是从右向左查询
  console.log(msg.lastIndexOf("e",2))// 8
//string.startsWith,判断字符串的第一/N个字符是不是给定参数值,区分大小写
  console.log(msg.startsWith("b",2))// true

7.字符串替换关键词

string.replace方法可以替换字符串关键字。

  const msg = "weizhuren"
  console.log(msg.replace("wei","zhu"))//zhuzhuren

8.字符串重复函数

String.repeat可以重复多次字符串。

 console.log("*".repeat(3))//重复n次字符串 ***
 function phone(mobile,len=4) {
   return String(mobile).slice(0,len*-1)+"*".repeat(len)
 }
 console.log(phone(15927030000))//1592703****

9.类型转换使用技巧

字符串和数字之间可以相互转化类型。

字符串转数字。

const msg = "99"
console.log(typeof msg)
console.log(msg + 1)//991
console.log(msg*1 + 1)//参与加法之外的数学运算 100
console.log(Number(msg) + 1)//使用Number函数转化为数字类型 100

数字转字符串。

const msg2 = 66
console.log(typeof msg2)//number
console.log(typeof (msg2 + ""))//数字类型连接字符串转化为字符串类型 String
console.log(typeof String(msg2))//使用String方法转化为字符串 String

使用其他函数将字符串转换为数字。

console.log(parseInt("789weizhuren"))//如果字符串以数字开头,那么数字使用parseInt方法就可以将非数字之前的数字以整数的形式返回 789
console.log(parseFloat("78.9weizhuren"))//如果字符串以数字开头,那么数字使用parseFloat方法就可以将非数字之前的数字以浮点数的形式返回 78.9

字符串的切分。

const msg  = "erbihou"
console.log(msg.split("bi"))//split将数组以括号内的标志进行划分成几组,并且不会保留划分标志 er,hou

将数组连接成为字符串。

const array = ["erbihou","weizhuren"]
console.log(array.join(" | "))//erbihou | weizhuren

将上面两个方法一起使用。

const msg = "weizhuren"
console.log(msg.split("").join("|"))//w|e|i|z|h|u|r|e|n

10.boolean的隐式转换原理

使用创建对象的方法定义一个boolean值变量。

const boolean = new Boolean(true)
console.log(boolean)//Boolean {true}
console.log(typeof boolean)//object
console.log(boolean.valueOf())//true
if(boolean.valueOf()){
  console.log("weizhuren")//weizhuren
}

直接定义一个boolean值变量。

let msg = true
console.log(typeof msg)//boolean
if(msg){
  console.log("weizhuren")//weizhuren
}

解析器会在进行布尔运算的时候,将一些非布尔值隐式转化为布尔值。无论是字符串还是数字都一样。

let msg = 99
if(msg){//这里将数字转化为波尔类型true
  console.log(msg)//99
}
console.log(msg == true)//这里将布尔类型转化成了数字类型,99!=1 false

11.显式转化为Boolean类型

我们可以将所有非boolean类型转化为boolean。

let number = 0
console.log(typeof number)
console.log(typeof !!number,!!number)//在做boolean判断时,可以将数字类型转化成boolean类型 boolean false
console.log(Boolean(number))//使用boolean方法直接将数字类型转化成boolean类型 false

//和数字相同,字符串也可以使用以上两种方式转化为boolean类型
let msg = "weizhuren"
console.log(typeof !!msg,!!msg)//boolean true
console.log(Boolean(msg))//true

//和数字相同,数组也可以使用以上两种方式转化为boolean类型
let array = []
console.log(typeof !!array,!!array)//boolean true
console.log(Boolean(array))//true
//其他所有类型都可以进行这样的转化

12.boolean类型实例操作

设计了一个判断输入年份是否正确的demo。

whileYear:while(true){//给循环加上标签,方便退出循环
  let thisYear = new Date()//获取当前时间
  const year = prompt("今年是哪一年?").trim()//将输入内容的空格去除
  if(!year)continue//如果没有输入继续循环
  if(year == thisYear.getFullYear()){//判断输入的年份是否符合要求
    console.log("回答正确!")
    break whileYear//退出循环
  }else{
    console.log("回答错误!")
  }
}

13.Number声明方式与基本函数

声明Number类型可以直接声明也可以使用创建对象的方式声明。

let number = new Number(99)//使用创建对象的方式声明 引用类型
let number2 = 88//直接声明 值类型
console.log(typeof number,typeof number2)//object number
console.log(number + 1,number2 + 2)//100 90
console.log(number.valueOf() + 1,number2.valueOf() + 2)//100 90

JavaScript还为Number类型提供了一些方法,除了以下列举的之外还有很多。

let number = 99.931
console.log(Number.isInteger(number))//判断是否是整数 false
console.log(number.toFixed(2))//四舍五入数字,可以指定四舍五入的小数点后的位数 100

14.NaN

NaN(Not a Number),代表该变量不是一个数字类型。

console.log(Number("weizhuren"))//将字符串转化为数字,如果非数字则返回NaN,如果是数字则返回数字
console.log(2 / "weizhuren")//NaN
console.log(NaN == NaN)//NaN不能进行比较,所以不能直接对比 false
console.log(Number.isNaN(2 / "weizhuren"))//使用NUmber.isNaN直接验证是否为数字 true
console.log(Object.is(2 / "weizhuren",NaN))//使用Object.is方法(同值验证)验证是否是NaN true

let array = [1, 2, 3]
console.log(Number(array))//转化数组返回NaN NaN
let obj = {}
console.log(Number(obj))//转化普通对象返回NaN,转化方法且方法返回数字时,可以返回对应数字 NaN

15.Math数学计算

数学计算方法有很多,这里介绍几个常用的方法。

console.log(Math.max(1,2,3,4,5))//返回一个最大数字 5
console.log(Math.min(1,2,3,4,5))//返回一个最小数字 1
//以上两种方法不支持数组
console.log(Math.floor(5.96))//向下取整 5
console.log(Math.ceil(5.66))//向上取整 6
console.log((5.66).toFixed(1))//四舍五入,可以限制位数 5.7
console.log(Math.round(5.46))//四舍五入,不可以限制位数 5

16.Math.random随机数

Math.random生成一个0~1的随机数。

console.log(Math.random())//一个0~1的随机数

17.日期时间戳

时间和时间戳都是开发过程中经常使用到的。

const date = new Date()
console.log(date)//Wed Jan 08 2020 16:51:46 GMT+0800 (中国标准时间)
console.log(typeof date)//object
console.log(date * 1)//可以返回一个时间戳 1578473506761

const date2 = Date()
console.log(date2)//Wed Jan 08 2020 16:51:46 GMT+0800 (中国标准时间)
console.log(typeof date2)//string
console.log(date2 * 1)//NaN

const date3 = Date.now()//直接获得时间戳 
console.log(date3)//1578473506761

const date4 = new Date("1995-11-29 12:25:03")
console.log(date4.getFullYear())//1995

const date5 = new Date(1995,11,29,12,25,03)
console.log(date5.getFullYear())//1995

日期转化为时间戳的方法。

const date = new Date("1995-11-29 12:25:03")
console.log(date * 1)
console.log(Number(date))
console.log(date.valueOf())
console.log(date.getTime())

时间戳转化为时间的方法。

const date = new Date("1995-11-29 12:25:03")
const timestamp = date.valueOf()
console.log(new Date(timestamp))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值