一、数据类型

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)

它有两个固定的值truefalse,表示肯定和否定。

4、未定义类型(undefined)

表示只声明不赋值的变量。

let age
        document.write(age) // undefined

undefined 的应用场景: 用户填写表单时,通过检测某个变量是不是undefined,判断数据是否被传递。

5、null(空类型)

null表示为空。

let obj = null

null 和 undefined 的区别:

  1. undefined 表示没有赋值;
  2. 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(数据):转换成数字类型,并且会忽略字符串中引号两边的空白符。
  • 其他类型转换成数值类型:
  1. 字符串:" 纯数字 " 转换成对应的数字
  2. " 非纯数字 " 转换成NaN;undefined转换成NaN
  3. 空字符串和空格会转换成0
  4. true转换成1;false转换成0
  5. null转换成0
  • Boolean(数据):转换成布尔值。
  • 其他类型转换成布尔值为false的情况:
  1. 数值:0/NaN
  2. 空字符串
  3. null
  4. 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()是将字符串转换成数值类型。执行的流程是,如果括号里不是字符串,先将其隐式转换成字符串,然后开始找第一个字符,如果是纯数字,继续找下一个,如果不是纯数字,则返回。