JavaScript数据类型

基本数据类型:

  • String
  • Number
  • Boolean
  • Undefined
  • Null
  • Symbol
  • BigInt

对象类型

  • Object:任意对象
  • Array: 一种特别的对象(拥有数值下表,内部数据是有序的)
  • Function: 一种特别的对象(可以执行)

判断数据类型的方法

  • typeof
    • 返回数据类型的字符串表达式(全小写)
    • 无法区分object和null,object和array(都返回object)
  • instanceof
    • 判断对象的具体类型
    • 用来判断A是否为B的实例,表达式为:A instanceof B,如果A是B的实例,则返回true,否则返回false。instanceof检测的是原型,内部机制是通过判断对象的原型链中是否有类型的原型
  • ===
    可以判断undefined,null
  • Object.prototype.toString()
    Object.prototype.toString.call('') //[object String]最准确的判断方法
  • constructor
    • 当一个函数F被定义时,JS引擎会为F添加prototype原型,然后在prototype上添加一个constructor属性,并让其指向F的引用,F利用原型对象的constructor属性引用了自身,当F作为构造函数创建对象时,原型上的constructor属性被遗传到了新创建的对象上,从原型链角度讲,构造函数F就是新对象的类型。这样做的意义是,让对象诞生以后,就具有可追溯的数据类型 ''.constructor == String //true

undefined和null的区别?

  • undefined代表定义未赋值
  • null定义并赋值了,只是值为null

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

  • 初始赋值,表明将要赋值为对象
  • 结束前,让对象成为垃圾对象(被垃圾回收器回收)

严格区别变量类型和数据类型?

  • 数据的类型
    • 基本类型
    • 对象类型
  • 变量的类型(变量内存值的类型)
    • 基本类型:保存的就是基本类型的数据
    • 引用类型:保存的是地址值

数据的特点

  • 可传递
  • 可运算

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

  • 算术运算
  • 逻辑运算
  • 赋值
  • 运行函数

什么是内存?

  • 内存条通电猴产生的可储存数据的空间(临时的)
  • 内存产生和死亡:内存条(电路板)->通电->产生内存空间->存储数据->处理数据->断电->内存空间和数据消失
  • 一块小内存的2个数据
    • 内部存储的数据
    • 地址值
  • 内存分类
    • 栈: 全局变量/局部变量
    • 堆:对象

什么是变量

  • 可变化的量,由变量名和变量值组成
  • 每个变量都对应的一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据

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

  • 内存用来存储数据的空间
  • 变量是内存的标识

var a = xxx,a内存中到底保存的是什么?

  • xxx是基本数据,保存的就是这个数据
  • xxx是对象,保存的是对象的地址值
  • xxx是一个变量,保存的xxx的内存内容(可能是基本数据,也可能是地址值)
var a = {age: 12}
var b = a
a = {name: 'Bob',age: 13}
b.age = 14
console.log(b.age,a.name,a.age) // 14 Bob 13
a = {name: 'Bob',age: 13}
function fn(obj) {
  obj = {age: 15}
}
fn(a)
console.log(a.age) //13
//因为刚开始a指向{age:13}的内存空间,在fn函数中,obj被赋值a,故它一开始也指向了{age:13}的内存空间,但后面又重新定义了obj, obj = {age: 15},此时obj不再指向{age:13},而是指向{age: 15}。现在obj和a指向的不是同一块内存空间

在js调用函数时传递变量参数时,是值传递还是引用传递?

  • 都是值(基本/地址值)传递

js引擎如何管理内存?

  • 内存生命周期
    • 分配小内存空间,得到它的使用权
    • 存储数据,可以反复进行操作
    • 释放小内存空间
  • 释放内存
    • 局部变量:函数执行完自动释放
    • 对象:成为垃圾对象->垃圾回收器回收

什么是对象

  • 多个数据的封装体
  • 用来保存多个数据的容器
  • 一个对象代表现实中的一个事物

为什么要用对象?

  • 统一管理多个数据

对象的组成

  • 属性:属性名(字符串)和属性值(任意)组成
  • 方法:一种特别的属性(属性值是函数)

什么时候必须使用['属性名']的方式?

  • 属性名包含特殊字符: - 空格
  • 属性名不确定

什么是函数

  • 实现特定功能的n条语句的封装体
  • 只有函数是可以执行的,其它类型的数据不能执行

为什么要用函数

  • 提高代码复用
  • 便于阅读交流

如何调用(执行)函数

  • test():直接调用
  • obj.test():通过对象调用
  • new test():new调用
  • test.call/apply(obj):临时让test成为obj的方法进行调用

什么是回调函数

  • 自己定义的且没有调用但最终该函数执行了

常见的回调函数

  • dom事件回调函数
document.getElementById('btn').onclick = function() {
  ...
}
  • 定时器回调函数
  • ajax请求回调函数
  • 生命周期回调函数

this是什么?

  • 任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window
  • 所有函数内部都有一个变量this
  • 它的值是调用函数的当前对象

如何确定this?

  • test(): window
  • p.test(): p
  • new test(): 新创建的对象(该构造函数创建出来的实例对象)
  • p.call(obj): obj
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355