JavaScript高级

数据类型

JavaScript中数据类型分为两大类
基本数据类型(值类型)和引用数据类型(对象类型)
基本类型:

  • String :任意字符
  • Number:任意数字
  • boolean:true/false
  • undefined:undefined
  • null:null

对象(引用类型)

  • Object:任意对象(用来存数据的对象)
  • Function:一种特别对象(可以执行的对象)
  • Array:一种特别对象(有数值下标,有序)

注意:Object包括Function和Array。

判断数据类型

  1. typeof:返回该数据的类型值的字符串表达,
  2. instanceof:翻译是实例的意思,判断是不是该构造函数的实例。主要用来判断对象的具体类型(Array还是Function)
  3. ===:全等于,用来判断等号两边的数据值和类型都一样。返回true/false

数据类型的分类和判断总结

  • 基本(值)类型
    • Number ----- 任意数值 -------- typeof
    • String ----- 任意字符串 ------ typeof
    • Boolean ---- true/false ----- typeof
    • undefined — undefined ----- typeof/===
    • null -------- null ---------- ===
  • 对象(引用)类型
    • Object ----- typeof/instanceof
    • Array ------ instanceof
    • Function ---- typeof

概念

实例:实例对象?
类型:类型对象?
举例说明:

function  Person (name,age){//构造函数  类型对象
	this.name = name
	this.age = age
}
var p = new Person('tom',14)
Person('jack',12)

就比如上面的举例,上面的Person方法是一个对象,因为他是一个方法,var p也是一个对象,此时这个p就是实例对象,而这个Person方法是构造函数,p实例化了类型对象Person.而Person(‘jack’,12)就不是构造函数了。

1.undefined与null的区别?
undefined:定义未赋值,如var a—>为undefined
null:定义并且赋值了,只不过赋值为null
如:var a = null
2.什么时候给变量赋值为null?
(1)用来初始赋值,表明将要赋值为对象。
如:var a = null
console.log(typeof a)—>Object,但是null是基本数据类型,但是返回的为Object,为什么?因为它人为你写的为空是由于现在对象属性,不确定。所以先为空,等以后再赋值。
(2)结束前,让对象成为垃圾对象(被垃圾回收机制)
3.严格区别变量类型和数据类型?
我们知道数据类型分为基本数据类型和对象类型,但是这针对的是数据,但像var a = 1,和var c = function(){}中,a是基本类型,而c是引用类型。
在这里插入图片描述

数据,变量, 内存的理解

数据:我理解的是 数据用数据类型来标识,基本分为对象数据和基本数据。如var a = 3,这里的数据指数字3.
在这里插入图片描述
变量:变量都放在内存中的栈空间里。var a = 3,a被称为变量,a被称为基本类型变量,它存的是基本数据类型。var obj = {name:‘tom’},obj是引用变量,它指向的是内存中堆空间的一个对象,它只是指向,它实际存放的是堆空间中对象的地址。在这里我们说的变量其实都不是我们要操作的数据。但是它们指向数据,我们依靠它来操作数据。

内存:
在这里插入图片描述

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

  • 内存是容器, 用来存储数据的空间
  • 变量是内存的标识, 通过变量我们可以操作(读/写)内存中的数据

实参与形参

var  a  = {name:"bob"}
function  fn2 (obj) {
	obj = {name:"tom"}
}
fn2(a)
console.log(a.name)//输出bob

上面的代码输出a对象的name的值,依然是bob,书上的话说,形参不能改变实参。根本原因是fn2(obj)这个方法,把a传进去时,它传递的是a变量的内容,a变量的内容是一个地址,这个地址指向的是{name:“bob”}对象。后来到方法里面又重新给它赋值了一个对象的地址,所以a的值依然没有改变。简单可以理解为fn2(obj=a)----》obj=a,fn2(obj).与a无关。
参数引用传递是值传递,传递的是变量a的值,即一个地址。这个地址指向的是{name:“bob”}对象。

举例:

var  a = 3
function  fn(a){
	a = a +1
}
fn(a)
console.log(a)//3

上面的代码输出结果是3.
重点区分: a = 3 和 fn(a) 中的a不是一个变量。fn中的a可以是任何名字。

对象

什么是对象?

  1. 多个数据的封装体
  2. 用来保存多个数据容器
  3. 一个对象代表现实中的一个事务

为什么要用对象?
为了统一管理多个数据
对象的组成

  • 属性:属性名(字符串)和属性值(任意类型)组成
  • 方法:一种特殊的属性(属性值是函数)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值