JS数据类型

1. 分类

  * 基本(值)类型

    *String: 任意字符串

    *Number: 任意的数字

    *boolean: true/false

    *undefined: undefined

    *null: null

  * 对象(引用)类型

    *Object: 任意对象

    *Function: 一种特别的对象(可以执行)

    *Array: 一种特别的对象(数值下标, 内部数据是有序的)

2. 判断

  *typeof:

    *可以判断: undefined/ 数值 / 字符串 / 布尔值 / function

    *不能判断: null与object  object与array

  *instanceof:

    *判断对象的具体类型

  *===

    *可以判断: undefined, null

-->

3:练习

1. undefined与null的区别?

  *undefined代表定义未赋值

  *nulll定义并赋值了, 只是值为null

2. 什么时候给变量赋值为null呢?

  * 初始赋值, 表明将要赋值为对象

  * 结束前, 让对象成为垃圾对象(被垃圾回收器回收)

3. 严格区别变量类型与数据类型?

  * 数据的类型

    *基本类型

    *对象类型

  * 变量的类型(变量内存值的类型)

    *基本类型: 保存就是基本类型的数据

* 引用类型: 保存的是地

4:

1. 什么是数据?

  * 存储在内存中代表特定信息的'东东', 本质上是0101...

  * 数据的特点: 可传递, 可运算

  * 一切皆数据

  * 内存中所有操作的目标: 数据

    *算术运算

    *逻辑运算

    *赋值

    *运行函数

2. 什么是内存?

  * 内存条通电后产生的可储存数据的空间(临时的)

  * 内存产生和死亡: 内存条(电路版)==>通电==>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失

  * 一块小内存的2个数据

    * 内部存储的数据

    * 地址值

  * 内存分类

    *栈: 全局变量/局部变量

    *堆: 对象

3. 什么是变量?

  * 可变化的量, 由变量名和变量值组成

  * 每个变量都对应的一块小内存,变量名用来查找对应的内存, 变量值就是内存中保存的数据

4. 内存,数据, 变量三者之间的关系

  * 内存用来存储数据的空间

  * 变量是内存的标识

5.var a={age:18}

function fun(obj) {

   obj={age:12}

}

fun(a);

console.log(a.age);//18

6:问题: 在js调用函数时传递变量参数时,是值传递还是引用传递

  * 理解1: 都是值(基本/地址值)传递

  * 理解2: 可能是值传递, 也可能是引用传递(地址值)

判断数据类型的方法及示例

1. typeof

  • 可以判断数据类型,它返回表示数据类型的字符串(返回结果只能包括number,boolean,string,function,object,undefined);
  • 可以使用typeof判断变量是否存在(如if(typeof a!="undefined"){...});
  • Typeof 运算符的问题是无论引用的对象是什么类型 它都返回object
typeof {} // object
typeof  [1,2] // object
typeof /\s/ //object

2.instanceof

原理 因为A instanceof B 可以判断A是不是B的实例,返回一个布尔值,由构造类型判断出数据类型

console.log(arr instanceof Array ); // true
console.log(date instanceof Date ); // true
console.log(fn instanceof Function ); // true
//注意: instanceof 后面一定要是对象类型,大小写不能写错,该方法试用一些条件选择或分支

3.通过Object下的toString.call()方法来判断

Object.prototype.toString.call();
console.log(toString.call(123)); //[object Number]
console.log(toString.call('123')); //[object String]
console.log(toString.call(undefined)); //[object Undefined]
console.log(toString.call(true)); //[object Boolean]
console.log(toString.call({})); //[object Object]
console.log(toString.call([])); //[object Array]
console.log(toString.call(function(){})); //[object Function]

4.根据对象的contructor判断

console.log('数据类型判断' -  constructor);
console.log(arr.constructor === Array); //true
console.log(date.constructor === Date); //true
console.log(fn.constructor === Function); //true

参考链接:https://www.jianshu.com/p/967d6db70437
posted @ 2021-11-03 10:45  徐学进  阅读(45)  评论(0)    收藏  举报