首页 /  技术专区  /  JavaScript 宽屏模式 >

JavaScript数据类型

1.1 数据类型

JS数据类型整体分为两大类:

    基本数据类型

    引用数据类型

Image.png

数字类型(number)

即我们数学中学习到的数字,可以是整数、小数、正数、负数

let age = 18        // 整数
let price = 88.99   // 小数

JavaScript 中的正数、负数、小数等统一称为数字类型

注意事项

JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认

Java是强数据类型 例如 int a = 3 必须是整数


算数运算符

数字可以有很多操作,比如,乘法*、除法 /、加法 +、减法 - 等等,所以经常和算术运算符一起。

数学运算符也叫算术运算符,主要包括加、减、乘、除、取余(求模)。

    +:求和

    -:求差

    *:求积

    /:求商

    %:取模 (取余数)

          开发中经常作为某个数字是否被整除


算数运算符的优先级

同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级

JavaScript中 优先级越高越先被执行,优先级相同时从左向右执行

乘、除、取余优先级相同

加、减优先级相同

乘、除、取余优先级大于加、减

使用 ( ) 可以提升优先级

总结:先乘除后加减,有括号先算括号里面的。


错误数字类型-NaN

NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果

console.log('老师' - 2)    // NaN

NaN 是粘性的。任何对 NaN 的操作都会返回 NaN

console.log(NaN + 2)    // NaN

最离谱的是NaN还不等于NaN

console.log(NaN === NaN) // false


字符串类型(string)

通过单引号('')、双引号("")或反引号(``)包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号

let uname = '坤坤'  // 单引号
let gender = "男"   // 双引号
let goods = `小米`  // 反引号
let tel = '15201212212' // 看上去是数字,但是被引号包裹就是字符串
let str = '' // 空字符串

注意事项:

1.无论单引号或是双引号必须成对使用

2.单引号/双引号可以互相嵌套,但是不以自已嵌套自已 (口诀: 外双内单,或者外单内双)

3.必要时可以使用转义符 \,输出单引号或双引号


字符串拼接

场景: + 运算符 可以实现字符串的拼接

口诀:数字相加,字符相连

console.log('我叫' + '坤坤') // 我叫坤坤
let uname = '坤坤'
let song = '鸡你太美'
console.log(uname + song) // 坤坤鸡你太美


模板字符串

使用场景

    拼接字符串和变量

    在没有它之前,要拼接变量比较麻烦

document.write('大家好,我叫' + name + ',今年' + age + '岁')

语法

    `` (反引号)

    在英文输入模式下按键盘的tab键上方那个键(1左边那个键)

    内容拼接变量时,用${}包住变量

document.write(`大家好,我叫${name},今年${age}岁~`)


布尔类型(boolean)

表示肯定或否定时在计算机中对应的是布尔类型数据

它有两个固定的值 true 和 false,表示肯定的数据用 true(真),表示否定的数据用 false (假)

let isCool = true
console.log(isCool)


转换为boolean型

显示转换:

1.Boolean(内容)

记忆:''、0、undefined、null、false、NaN 转换为布尔值后都是 false,其余则为 true


隐式转换:

1.有字符串的加法“”+1,结果是“1”

2.减法- (像大多数数学运算一样)只能用于数字,它会使空字符串“”转换为 0

3.null 经过数字转换之后会变为 0

4.undefined 经过数字转换之后会变为 NaN


未定义类型 (undefined )

未定义是比较特殊的类型,只有一个值 undefined。

什么情况出现未定义类型?

只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为 undefined。

let age     // 声明变量但未赋值
document.write(age)     // 输出undefined


工作中的使用场景:

我们开发中经常声明一个变量,等待传送过来的数据。

如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来。


null (空类型 )

JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值

let obj = null
console.log(obj)    // null


null和 undefined 区别:

undefined 表示没有赋值

null表示赋值了,但是内容为空


1.2 控制台输出语句和检测数据类型

通过 typeof 关键字检测数据类型

typeof 运算符可以返回被检测的数据类型。

它支持两种语法形式

    1. 作为运算符: typeof x (常用的写法)

    2. 函数形式: typeof(x)

换言之,有括号和没有括号,得到的结果是一样的,所以我们直接使用运算符的写法

let age = 18
let uname = '坤坤'
let flag = false
let buy
console.log(typeof age)     // number  
console.log(typeof uname)   // string
console.log(typeof flag)    // boolean
console.log(typeof buy)     // undefined


1.3 术语拓展

Image.png


1.4 基本数据类型和引用数据类型

简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型

值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型。

    string ,number,boolean,undefined,null

引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型。

    通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等


堆栈空间分配区别:

1、栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈

简单数据类型存放到栈里面

Image.png

2、堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。

引用数据类型存放到堆里面

Image.png








头像
0/200
图片验证码