javaScript属于弱语言类型浏览器脚本语法,当前数据类型是由值决定的;

1.typeof

用来检测基本数据类型的(相对来说不够精确),会将当前的数据类型以字符串的形式返回

基本语法

typeof  数据;

typeof(数据);

2.数据的划分

基本数据类型
  • Number 数字
  • String 字符串
  • Boolean 布尔类型
  • null 空指针
  • undefined 未定义
复杂数据类型(引用数据类型)
  • object
    • Object 对象类
    • Arrray 数组类
  • function

3.Number

​ 正数 负数 0 NaN Infinity (无穷大)

小数计算精度问题

// 因为js在进行运算  采用的IEEE-754双精度标准去运算,都会转为二进制进行运算因为0.1转为二进制是无限循环   0.0001 1001 1001 1001…(无限循环) 0.2转为二进制也是无限循环  进行取舍(约等于)结果就是不精确的
console.log(0.1 + 0.2); //0.30000000000000004
// console.log((0.1+0.2)==0.3);

// 解决方法:
// 将原来的每一项扩大10倍  最后缩小10倍
console.log((0.1 * 10 + 0.2 * 10) / 10);

4.String

​ 用单引或双引包起来的就是字符串

字符串的属性

  • length 字符串长度 (字符的个数) 返回值是一个数值

  • 获取当前字符串中对应的某个字符

    • 语法

      变量.charAt(index);  //index:索引
      
      变量[index]  //IE7及以下获取到的undefined
      

5.Boolean

表示真或假

  • true 真
  • false 假

6.null 和undefined

  • null:空指针 返回值是object
  • undefined:未初始化,未赋值

7.Object

​ 对象类,用来描述当前事物的详细信息。

​ 对象的组成:一个对象是由属性名和属性值组成的

1.对象的创建
  • 字面量的方式 {}
    • var obj = {}; {}中没有内容 就是空对象
    • var obj1 = {属性名:属性值,属性名:属性值,...};
2.对象的操作
  • 获取属性值

    对象.属性值;
    
    对象[属性名];
    
  • 设置属性值(原来没有就是增加,有的话就是修改)

    对象.属性值 = 值;
    
    对象[属性值] = 值;
    

8.Array

作用:存储任意数据类型的一个集合,没有数据就是空数组

描述:由索引和值组成,天生自带length属性,索引从0开始依次递增,最后一项的索引arr.length-1

1.数组的创建
  • 字面量的方式 []

    var arr = [];

    var arr1 = [10,"哈哈",true];

2.数组的属性
  • length 数组的长度,数据的个数
3.数组的操作
  • 获取

    数组[索引];

9.函数

​ 描述:具有特定功能的代码段

基本语法

//函数定义
function 函数名(){
    //函数体
}

//函数调用
 函数名();

函数名表示当前函数本身

10.typeof返回值

typeof一般用于基本数据类型检测 object下不能进行细分

  • Number ->number
  • Stirng ->string
  • Boolean ->boolean
  • null -> object
  • undefined - > undefined
  • Obecjt -> object
  • Array->object
  • Function ->function

11.基本数据类型和引用数据类型的本质区别

本质区别:基本数据类型操作的是值,引用数据类型操作的是地址

12.数据类型的强制转换

1.其它数据类型转为数字

​ 引用数据类型转为数字,先内置调用toString()方法,然后再去转为数字

  • Number(数据);
    • 将转完后的值 返回 转不成具体的数值 返回NaN
    • 字符串转为数字,必须是纯数字字符串,一旦遇到非数字字符,就停转转换返回NaN,但是可以识别小数(只能识别一个小数),可以保留小数
    • 布尔类型转为数字 true --> 1 false --> 0
    • null --> 0 "" --> 0 [] --> 0
    • 其它类型转为数字都是NaN

    方法补充:

    ​ isNaN() 判断字符是否为非数字 true false

    ​ 注意: 5 和 "5" 都认为是数字

  • parseInt(数据);
    • 字符串转为数字一旦遇到非数字字符就停止转换了,并且不识别小数点,开头就是非数字字符返回NaN (转为整数)
    • 其它类型全部返回NaN
    • 数组特殊
  • parseFloat(数据);
    • 字符串转为数字一旦遇到非数字字符就停止转换了,识别小数点,开头就是非数字字符返回NaN (只能识别一个小数点)
    • 其它类型全部返回NaN
    • 数组特殊

2.其它数据类型转为布尔

对于单个数据而言,只有0 NaN null undefined "" 是假的 其它的都是真的

  • Boolean(数据);

3.其它类型转为字符串

区别:String(数据);可以将所有其它数据类型转为字符串,

​ 变量.toString(),null和undefined没有这个属性

  • String(数据);
    • 返回字符串
  • 变量.toString();
  • 拼接空字符串