1.1 数据类型
JS数据类型整体分为两大类:
基本数据类型
引用数据类型
数字类型(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 术语拓展
1.4 基本数据类型和引用数据类型
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型。
string ,number,boolean,undefined,null
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型。
通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等
堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈
简单数据类型存放到栈里面
2、堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。
引用数据类型存放到堆里面