首页 > 其他分享 >JS-数据类型和类型转换

JS-数据类型和类型转换

时间:2023-06-10 16:23:11浏览次数:40  
标签:类型转换 11 console log 数据类型 JS 类型 字符串

一. 数据类型

计算机程序可以处理大量的数据,为什么要给数据分类?

  1. 更加充分和高效的利用内存;
  2. 也更加方便程序员的使用数据。

数据类型分为两大类:基本数据类型和引用数据类型
1.原始类型:

  • number 数字型
  • string 字符串型
  • boolean 布尔型
  • undefined 未定义型
  • null 空类型

2.引用类型:

  • object 对象型
  • function 函数类型
  • array 数组类型

number-数字类型

与Java不同,JavaScript是一种弱数据类型语言,所以此处number表示所有数字,包括整数、小数、正数、负数。

弱数据类型是指只有在赋值之后我们才能知道变量到底属于哪种类型。

let age = 18
let score = 18.1
let name = '小明' - 1     //此时name的值是NaN
console.log(NaN + 1)     //NaN

NaN: 代表一个错误。它是一个不正确的或者一个未定义的数学操作所得到的结果。
NaN是粘性的,任何对NaN的操作都会返回NaN。

string-字符串类型

通过单引号('')、("")、(``)包裹的数据都叫字符串 ,推荐使用单引号

image

注意:

  1. 无论单引号还是双引号必须成对使用
  2. 单引号/双引号可以互相嵌套,但是不能自己嵌套自己
  3. 必要时可以使用转义字符\,用来输出单引号或双引号

字符串拼接:+可以实现字符串的拼接。但是有更好用的方法:模板字符串
模板字符串:

  • 使用反引号``
  • 内容拼接变量时,用${}包住变量
//使用前
document.write('大家好,我是' + name + ',今年' + age + '岁了')
//使用后
document.write('大家好,我是${name},今年${age}岁了')

boolean-布尔类型

布尔类型在计算机中用来表示肯定或否定。
两个固定值:truefalse

undefined-未定义类型

未定义类型是一个特殊的类型,只有一个值 undefined
什么情况下会出现未定义类型?
只声明了变量,不赋值的情况下,变量默认的值就是 undefined ,一般不会直接为值赋为 undefined

image

使用场景:
我们开发中经常先声明一个变量,等待传送过来的数据。
如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来。

null-空类型

仅仅用来表示“无”、“空”、“未知值”的特殊值。

null 和 undefined 的区别:

  • undefined 表示没有赋值
  • null 表示赋值了,但是内容是空

使用场景:
把 null 作为尚未创建的对象。
将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个 null。

二. 数据类型检测

通过控制台输出语句判断

控制台输出语句时,数字型和布尔型颜色为蓝色,字符串和undefined为灰色

通过 typeof 关键字检测

typeof 运算符可以返回被检测的数据类型。它支持两种语法:

  • 作为运算符:typeof x(推荐)
  • 函数形式:typeof(x)

image

三. 类型转换

为什么要类型转换?
JavaScript是弱数据类型:JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。
但是当我们使用表单、prompt获取过来的数据默认是字符串类型的,此时不能直接简单的进行加法运算

console.log('1000' + '200')    //此时输出不是1200,而是1000200

所以我们需要把一种数据类型的变量转换成我们需要的数据类型

隐式转换

某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
规则:

  • +两边只要有一个是字符串,都会把另外一个转成字符串
  • 除了+以外的算术运算符- * /等都会把数据转为数字类型

特殊:

  • +号作为正号解析时,可以将后面的字符串转换成数字型
  • 任何数据和字符串相加结果都是字符串
<script>
        console.log(11 + 11)    //22
        console.log('11' + 11)  //1111
        console.log(11 - 11)    //0
        console.log('11' - 11)  //0
        console.log(1 * 1)      //1
        console.log('1' * 1)    //1
        console.log(typeof '123')   //string
        console.log(typeof +'123')  //number
        console.log(+'11' + 11)     //22
        let num1 = prompt('请输入num1')     //此时num1是string类型
        let num2 = +prompt('请输入num2')    //此时num2是number类型
</script>

显式转换

编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。
为了避免因隐式转换带来的问题,通常根据逻辑需要对数据进行显式转换。
转换为数字型:

  • Number(数据)
    • 转成数字类型
    • 如果字符串内有非数字,则转换失败结果显示为NaN(Not a Number)即不是一个数字
    • NaN也是number类型的数据,代表非数字
  • parseInt(数据)
    • 只保留整数
    • 会从左往右识别,如果先有数字后有非数字则只会保留数字,如果先有非数字直接变NaN
  • parseFloat(数据)
    • 可以保留小数

转换为字符串类型:

  • 数值 + ``
  • String(数据)
  • 变量.toString()
    • 括号里面可以跟进制

标签:类型转换,11,console,log,数据类型,JS,类型,字符串
From: https://www.cnblogs.com/-ula/p/17471009.html

相关文章

  • #yyds干货盘点#【yyds干货盘点】5. Vue.js 事件处理
    学习目录:Vue.js简介Vue.js实例与数据绑定Vue.js计算属性和侦听器Vue.js条件渲染和列表渲染Vue.js事件处理Vue.js表单输入绑定Vue.js组件基础Vue.js组件通信Vue.js插槽Vue.js动态组件和异步组件Vue.js自定义指令Vue.js过渡和动画Vue.js混入Vue.js自定义事件和v-model......
  • NOR闪存MT28EW01GABA1LJS-0SIT、MT28EW01GABA1HJS-0SIT(1Gbit)
    产品详情:MT28EW01GABA1Gbit并行NOR闪存器件具有较高的密度、就地执行(XiP)性能和架构灵活性,可满足汽车、消费类和移动产品的设计要求。该器件非常适合用于GPS/导航、汽车后视摄像头、手机、智能手机和电子阅读器。该器件还具有较宽的温度范围、经过验证的可靠性追踪记录,并可长期......
  • js笔记_方法
    方法就是把函数放在对象的里面,对象只有两个东西:属性和方法varli={name:'li',birth:2000,age:function(){varnow=new.Date().getFullYear();returnnow-this.birth;}}//属性li.name//方法,一定带()li.age()......
  • js笔记_变量的作用域
    在JavaScript中,var定义变量实际是有作用域的。假设在函数体中声明,则在函数体外不可以使用,(非要想实现的话,后面可以研究一下闭包)functionli(){varx=1;x=x+1;//2}x=x+2;//uncaughtReferenceError:xisnotdefined如果两个函数使用了相同的变量名,只要在函数内......
  • js笔记_函数
    函数定义方式一绝对值函数functionabs(x){returnx;}else{return-x;}一旦执行到return代表函数结束,返回结果。如果没有执行return,函数执行完也会返回结果,结果就是undefined定义方式二varabs=function(x){if(x>=0)returnx;}else{return-x;}}function(x){.......
  • js原始坐标转百度坐标(GPS坐标转百度坐标)(火星坐标转百度坐标)
    wgs84togcj02tobd09(lng,lat){constxPI=3.14159265358979324*3000.0/180.0constPI=3.1415926535897932384626consta=6378245.0constee=0.00669342162296594323//WGS84转GCj02letdlat=transformlat(lng-105.0,lat-35.......
  • python3的数据类型
    赋值python中没有声明变量,只有赋值变量,每个变量在使用前都需要赋值,变量只有被赋值了才会被创建多个变量赋值a=b=c=1a,b,c=1,2,3标准的数据类型常见的数据类型有number(数字)string(字符串)dictionary(字典)tuple(元组)list(列表)set(集合)不可变类型:number(数字)......
  • js层
    browseCourse.js$(document).ready(function(){$("#addCourse").click(function(){$("#popup").css("display","block")$("#overlay").css("display","block")})......
  • JS-变量、常量和数组
    一.变量变量是计算机中用来存储数据的“容器”,它可以让计算机变得有记忆,通俗的理解变量就是使用【某个符号】来代表【某个具体的数值】(数据),这个符号就是变量,这个具体的值称为字面量。<script>//x符号代表了5这个数值x=5//y符号代表了6这个数值y=6......
  • JS中循环遍历数组的几种常用方式总结
    第一种:for循环,也是最常见的最简单的一种,也是使用频率最高的一种,虽然性能不弱,但仍有优化空间constarr=[11,22,33,44,55,66,77,88];for(leti=0;i<arr.length;i++){console.log(arr[i]);}第二种:优化版for循环constarr=[11,22,33,44,5......