一、数据类型
js是弱数字类型,需要赋值之后才能确定类型。
js数据类型整体分为两大类:
- 基本数据类型
umber、string、boolean、undefined、null
- 引用数据类型
object、function、array
1、数字类型(number)
可以是整数、小数、正数、负数。
let age
age = 18
let name = Angela,sex = w
2、字符串类型(string)
通过单引号('')、双引号("")或反引号(`)包裹的数据都叫字符串
,单引号和双引号没有本质上的区别,js
内推荐使用单引号
。如有需要外单内双
。
实例:
let fruit = prompt('请输入您喜欢的水果:')
console.log('"Angela"喜欢吃' + fruit)
模板字符串
作用: 拼接字符串和变量
符号: `...${...}, ...${...}...`
,内容拼接变量时,用${}包住变量
console.log(`我的名字是${uname},
今年${age-2}岁。`)
反引号可以换行输出。
3、布尔类型(boolean)
它有两个固定的值true
和false
,表示肯定和否定。
4、未定义类型(undefined)
表示只声明不赋值的变量。
let age
document.write(age) // undefined
undefined 的应用场景: 用户填写表单时,通过检测某个变量是不是undefined
,判断数据是否被传递。
5、null(空类型)
null
表示为空。
let obj = null
null 和 undefined 的区别:
-
undefined
表示没有赋值; -
null
表示赋值了,但是内容为空。
null 开发的应用场景: 如果一个变量里面确定一个对象,如果还没准备好对象,可以先放个null
。
二、控制台输出语句和检测数据类型
1、通过控制台输出语句颜色判断
- 黑色
string
- 蓝色
number
2、通过 typeof 检测数据类型
console.log(typeof 123) // number
console.log(typeof '123') // string
console.log(typeof true) // boolean
console.log(typeof undefined) // undefined
console.log(typeof null) // object
实例:
let num = 10
document.write(typeof num + '11') // number11
document.write(typeof (num + '11')) // string
document.write(typeof (num + +'11')) // number
typeof
的优先级大于 +
。
3、通过 instanceof 检测数据类型
var obj = {};
var arr = [];
var myFunction = function(){};
console.log(obj instanceof Object); //true
console.log(arr instanceof Array); //true
console.log(fn instanceof Function); //true
// 数组和函数也是特殊的对象
console.log(arr instanceof Object); //true
console.log(fn instanceof Object); //true
三、类型转换
很多情况下,如表单、prompt
获取过来的数据默认是字符串类型的,不能直接简单的进行加法运算。
1、隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
-
ToString()
给程序员使用的是变量.toString(进制)
-
ToNumber()
不能使用 -
ToBoolean()
不能使用
使用+的规则:
-
+
号两边只要有一个是字符串,都会把另一个转换成字符串;如果两边没有字符串,会转换成Number
类型; -
除了+以外
的算术运算符,比如 - * / 等都会把数据转换成数字类型; -
+
作为正号解析可以转换成Number
类型。
let num = +prompt('请输入数字:')
2、显式转换
隐式转换基于经验,显式转换较为明确。
-
String(数据)
:括号的表达式返回字符串类型。 Number(数据)
:转换成数字类型,并且会忽略字符串中引号两边的空白符。
- 其他类型转换成数值类型:
- 字符串:" 纯数字 " 转换成对应的数字
- " 非纯数字 " 转换成NaN;undefined转换成NaN
- 空字符串和空格会转换成0
- true转换成1;false转换成0
- null转换成0
Boolean(数据)
:转换成布尔值。
- 其他类型转换成布尔值为false的情况:
- 数值:0/NaN
- 空字符串
- null
- undefined
3、其他类型转换为数字型
-
Number(数据)
:转换成数字类型,如果字符串里面有非数字型,转换结果为NaN
。 -
parseInt(数据)
:只保留整数,不进行四舍五入。将字符串转换成数值类型。 -
parseFloat(数据)
:可以保留小数。
实例:
console.log(Number('10')) // 10
console.log(parseInt('10.999')) // 10
console.log(parseFloat('10.99')) // 10.99
console.log(+'10.99') // 推荐使用
console.log(Number('100px')) // NaN
console.log(parseInt('100px')) // 100
console.log(parseInt('px100px')) // NaN
number()
只能放纯数字,parseInt()
和parseFloat()
里面有数字+字母的组合,可以用于过滤单位。
parseInt()
和parseFloat()
是将字符串转换成数值类型。执行的流程是,如果括号里不是字符串,先将其隐式转换成字符串,然后开始找第一个字符,如果是纯数字,继续找下一个,如果不是纯数字,则返回。