JS高级(一)基础总结

数据类型

基本类型

String:任意字符串
Number:任意数字
boolean:trur/false
undefined:undefined
null:null

判断

typeof:可以判断:undefined/数值/字符串/布尔值/function;
不能判断:null与object object与array
instanceof:判断对象的具体类型
===:可以判断:undefined/null

对象(引用)类型

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

问题1

1.undefined与null的区别?
答:undefined代表定义未赋值;null定义并赋值了,只是值为null
2.什么时候给变量赋值为null?
答:初始赋值:表明将要赋值为对象;结束前:让对象成为垃圾对象(被垃圾回收器回收)
3.严格区别变量类型与数据类型?
答:数据类型:基本类型与对象类型;变量类型(变量内存值的类型):基本类型——保存就是基本类型的数据;引用类型——保存的是地址值

数据&变量&内存

问题2

1.数据:存储在内存中代表特定信息。数据特点:可传递,可运算
2.内存:内存条通电后产生的可储存数据的空间。一块小内存数据:内部存储的数据+地址值。内存分类:栈——全局变量/局部变量;堆——对象
3.变量:可变化的量,由变量名和变量值组成;每个变量对应一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据
4.内存,数据,变量之间的关系?
答:内存用来存储数据的空间;变量是内存的标识。

问题3

1.var a = xxx,a内存中保存的是什么?
答:1)xxx是基本数据,保存这个数据;
2)xxx是对象,保存对象的地址值;
3)xxx是一个变量,保存的xxx的内存内容(基本数据or地址值)
2.引用变量赋值问题
答:1) n个引用变量指向同一个对象,通过一个变量修改对象内部数据,其他变量看到的是修改之后的数据;
2) n个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,其他变量依然指向原对象

var obj1 = {name: 'Tom'};
var obj2 = obj1;
obj1.age = 12;
console.log(obj1.age); //12
function fn(obj){
	obj.name = 'Bob';
}
fn(obj1);
console.log(obj2.name) //Bob
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

3.在js调用函数时传递变量参数时,是值传递还是引用传递?
答:都是值(基本/地址值)传递
4.JS引擎如何管理内存?

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

对象

什么是对象

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

为什么要用对象

统一管理多个数据

对象的组成

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

如何访问对象内部数据

  • .属性名:编码简单
  • [‘属性名’]:较复杂:必须使用时:
    *属性名包含特殊字符:- 空格
    *属性名不确定

函数

什么是函数

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

为什么用函数

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

如何定义函数

函数声明+表达式

如何调用函数

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

回调函数

什么函数才是回调函数

定义了
没有调用
但最终执行了

常见的回调函数

dom事件回调函数
定时器回调函数
ajax请求回调函数
生命周期回调函数

IIFE

立即执行函数表达式

Immediately-Invoked Function Expression
(function () {}) ()

作用

隐藏实现
不影响外部命名空间

函数中的this

this定义

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

如何确定

  • test():window
  • p.test():p
  • new test():新创建的对象
  • p.call(obj):obj
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值