js的数据类型
1. 简单数据类型 (基本数据类型)
-
1.1 数字类型(number): 所有的整数和浮点数
-
1.2 字符串类型(string): 在 JS 中, 只要是引号包裹的内容, 统称为字符串
-
var str1 = 'qwer'
var str2 = '!@#$%'
-
1.3 布尔类型(boolean): 表明 对/错(真/假)
-
var boo1 = true // 表明为真
var boo2 = false // 表明为假
-
1.4 undefined类型 (undefined): 表明未定义, 通常我们不会给一个变量赋值为 undefined, 因为 变量定义但不赋值就是一个 undefined
-
var und1 = undefined
-
1.5 null类型(null): 表明为 空对象指针 (空), 一般很少使用, 但是如果创建了一个对象, 但是不知道对象的值是什么的时候可能会给一个 null
var nul = null
数据类型检测 关键字 typeof
假设要检测的变量名为 box * 1. typeof(box) * 2. typeof box
null 的类型就是 null
-
但是 typeof 这个方法有一点小问题, 它会将 null 识别为 object 类型
数据类型转换 1 Number(数据)
2 parseInt(数据)
3 parseFloat(数据)
一 转Number类型
Number(数据)
console.log(Number('10086'))----10086
console.log(Number('')) 空字符串 --- 0
console.log(Number(' ')) 空白字符串 --- 0
console.log(Number('123hh ')) 前边数字后字母--- NaN
console.log(Number('qwertyui'))没有数字的字符串 NAN
布尔值:true转为1,false转为0
console.log(Number(true)) 1
console.log(Number(false)) 0
console.log(Number(undefined)) NaN
console.log(Number(null)) 0
parseInt整形
console.log(parseInt(100))---100
// console.log(parseInt(100.666))---100
// console.log(parseInt('')) // 空字符串 --- NaN
// console.log(parseInt(' ')) // 空白字符串 --- NaN
// console.log(parseInt('!@#$%^&')) // 非空非空白字符串 --- NaN
// console.log(parseInt('qwerty')) // 非空非空白字符串 --- NaN
// console.log(parseInt('qwerty10086')) // 非空非空白字符串 --- NaN
// console.log(parseInt('10086qwerty')) // 字符串中开头为数字, 那么直接保留数字并忽略数字以后的所有内容 --- 10086
// console.log(parseInt('10086qwe999rty')) // 字符串中开头为数字, 那么直接保留数字并忽略数字以后的所有内容 --- 10086
// console.log(parseInt('100')) // 直接将字符串中的数字转为 数字类型---100
// console.log(parseInt('100.10086')) // 直接将字符串中的数字转为 数字类型---100
parseFloat(浮点型)
console.log(parseFloat(100.12))---100.12
console.log(parseFloat('100'))---100
console.log(parseFloat(true))---NaN
console.log(parseFloat(false))---NaN
console.log(parseFloat('100.12alal'))---100.12
console.log(parseFloat('alal100.12'))---NaN
console.log(parseFloat(100))---100
数据 - 0 也能转成Number
var box = '10086' console.log(box) console.log(box - 0)
二 转String(字符串)类型
- 变量/数据.toString()
问题: undefined 和 null 不能使用
- String(变量/数据)
什么类型都能转换为 字符串
- 变量/数据 + ' '
变量/数据.toString()
var box = 100 console.log( typeof (box), box)------Number 100 console.log( typeof (box.toString()), box.toString()) --------String '100'
toString转换布尔值 问题: undefined 和 null 不能使用
true
console.log(typeof(true), typeof(true.toString())) --------boolean string console.log(true, true.toString()) --------true 'true'
false
console.log(typeof(false), typeof(false.toString())) -------boolean string console.log(false, false.toString()) -------false 'false'
String(变量/数据) 什么类型都能转换为 字符串
console.log(typeof(undefined), typeof(String(undefined))) --------undefined string console.log(typeof(null), typeof(String(null))) --------object string console.log(typeof(String(100))) ----------string console.log(typeof(String(true))) ----------string
变量/数据 + ' '
console.log(typeof(undefined), typeof(undefined + '')) --------undefined string console.log(typeof(null), typeof(null + '')) object string
三 转布尔类型 1 Boolean(变量/数据)
2 !!变量/数据 一个! 表示得到这个数据取反后的布尔值 俩个! 表示得到这个数据的布尔值
// 数字转布尔值 非0即为真
// console.log(Boolean(0))------false
// console.log(Boolean(1))----true
// console.log(Boolean(-1))
// console.log(Boolean(100))
// console.log(Boolean(-10000))
// console.log(Boolean(1.567))
// 字符串转布尔值 只有空字符串会转为 false
// console.log(Boolean(''))-----false
// console.log(Boolean(' '))-------true
// console.log(Boolean('1234567'))
// console.log(Boolean('!@#$'))
// console.log(Boolean('qwerts'))
// console.log(Boolean('你好!@#$%qwert12345'))
// undefined 和 null
console.log(Boolean(undefined)) // false
// console.log(Boolean(null)) // false
!和!!
console.log(!undefined) ---- true
console.log(!!undefined) ----- false
算数运算符
-
-
- / %
-
-
注意: + 一般是给数字使用的, 但是如果 符号的任意一边有字符串类型的, 那么不在计算求和, 而是计算一个拼接
-
并且拼接后的值是字符串类型的
-
这也是为什么 一个数据 + ' ' 能够转换为 字符串类型
自增自减 ++ --
如果 符号 在 变量/数据 前, 先运算自增或者自减, 然后参与周围程序运算
如果 符号 在 变量/数据 后, 先参与周围程序运算, 然后自增或者自减
++num先加后用
num++先用后加
逻辑运算 &&(与) ||(或) !非
&& 逻辑与 逻辑且 (一假全假,全真为真)
-
语法: 变量1/数据1 && 变量2/数据2
-
运行规则: 会判断符号左边的变量的值, 转换为布尔值后
-
如果符号左边布尔值为 true, 那么运行符号右边的代码或者返回符号右边的代码
-
如果符号左边布尔值为 false, 那么直接运行符号左边的代码或者返回符号左边的代码
true && console.log('左边为 true 右边执行') false && console.log('左边为 false 右边就不会执行了')
|| 逻辑或(一真全真,全假为假)
-
语法: 变量1/数据1 || 变量2/数据2
-
运行规则: 会判断符号左边的变量的值, 转换为布尔值后
-
如果符号左边布尔值为 true, 那么运行符号左边的代码或者返回符号左边的代码
-
如果符号左边布尔值为 false, 那么直接运行符号右边的代码或者返回符号右边的代码
true || console.log('左边为 true 右边就不会执行了') false || console.log('左边为 false 右边才会执行')