高阶JavaScript笔记1(数据类型 ,相关问题, 数据_变量_内存 ,相关问题,对象)

高阶JavaScript

  • 数据类型
    • 相关问题(undefined与null的区别,什么时候给变量赋值为null,严格区别变量类型和数据类型)
  • 数据_变量_内存
    • 相关问题(关于引用变量赋值的问题;在JS调用函数时传递变量参数时,是值传递还是引用传递;JS引擎如何管理内存)
  • 对象

数据类型

1、分类
(1)基本类型

  • String:任意的字符串
  • Number:任意的数字
  • Boolean:true/false
  • Undefined:undefined
  • Null:null

(2)对象类型/引用类型

  • Object:任意对象
  • Function:一种特别的对象(函数)
  • Array:一种特别的对象(数组)

2、判断

(1)typeof

  • 可以判断:undefined,数值,字符串,布尔值,function
  • 不能判断:null与object;object和array
  • 返回数据类型的字符串表达
var a;
console.log(a,typeofa,typeof a==='undefined');//undefined,'undefined',true
a=4;
console.log(typeof a==='number');//true
a='lyh';
console.log(typeof a==='string');//true
a=null;
console.log(typeof a);//'object';只能用===来判断是否是null

(2)instanceof

  • 判断对象的具体类型
var b1 = {
b2:[1,'abc',console.log],
b3:function(){console.log('b3');
return function(){
return 'lyh';}
};
 };

高阶JavaScript笔记1(数据类型 ,相关问题, 数据_变量_内存 ,相关问题,对象)_第1张图片

(3)===

  • 可以判断:undefined,null

相关问题(undefined与null的区别,什么时候给变量赋值为null,严格区别变量类型和数据类型)

1、undefined与null的区别

  • undefined代表定义未赋值
  • null定义了并赋值,只是值为null
var a ;
console.log(a);//undefined
a = null;
console.log(a);//null

2、什么时候给变量赋值为null

  • 初始赋值为null,表明将要赋值的变量为对象
  • 结束时,让对象成为垃圾对象(被垃圾回收器回收)
var b = null;//初始赋值为null,表明将要赋值的变量为对象
b = [1,2,3];
b = null;//让b指向的对象成为垃圾对象(被垃圾回收器回收)

3、严格区别变量类型和数据类型
(1)数据的类型

  • 基本类型
  • 对象类型

(2)变量的类型

  • 基本类型:保存的是基本类型的数据
  • 引用类型:保存的是地址值

数据_变量_内存

1、什么是数据

  • 存储在内存中的代表特定的信息的东西,本质上是0101…
  • 数据的特点:可传递,可运算
  • 一切皆数据
  • 内存中所有操作的目标

2、什么是内存

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

3、什么是变量

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

4、内存,数据,变量三者的关系

  • 内存用来存储数据的空间
  • 变量是内存的标识
    高阶JavaScript笔记1(数据类型 ,相关问题, 数据_变量_内存 ,相关问题,对象)_第2张图片
    高阶JavaScript笔记1(数据类型 ,相关问题, 数据_变量_内存 ,相关问题,对象)_第3张图片

相关问题(关于引用变量赋值的问题;在JS调用函数时传递变量参数时,是值传递还是引用传递;JS引擎如何管理内存)

1、关于引用变量赋值的问题

  • 2个引用变量指向同一个对象,通过修改一个变量修改对象内部数据,另一个变量看到的是修改后的数据
  • 2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一引用变量依然指向前一个对象
var a = {
            age: 12
        };
        a = {
            age: 13
        };

        function fun(obj) {
            obj = {
                age: 15
            };
        }
       fun(a);
        alert(a.age);//输出13
/*因为传实参进去之后obj一开始的内容等于a;
后来obj又开辟了一个新的地址,已经和a无关了*/

2、在JS调用函数时传递变量参数时,是值传递还是引用传递

  • 理解1:都是值(基本值/地址值)传递
  • 理解2:可能是值传递,也可能是引用传递(地址值)

3、JS引擎如何管理内存
(1)内存生命周期

  • 分配小内存空间,得到它的使用权
  • 存储数据,可以反复进行操作
  • 释放小内存空间

(2)释放内存

  • 局部变量:函数执行完自动释放
  • 对象:成为垃圾对象==>垃圾回收器回收
function fun(){
var b = {};
};
fun();//b是自动释放,b指向的对象是在后面的某一时刻由垃圾回收器回收

对象

1、什么是对象

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

2、为什么要用对象

  • 统一管理多个数据

3、对象的组成

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

4、如何访问对象内部的数据

  • . 属性名:编码简单,有时不能用
  • [‘属性名’]:编码麻烦,能通用
  • 什么时候用 [‘属性名’] 的方式
    (1)属性名包含特殊字符:空格 与 -
    (2)属性名不确定
    高阶JavaScript笔记1(数据类型 ,相关问题, 数据_变量_内存 ,相关问题,对象)_第4张图片
    高阶JavaScript笔记1(数据类型 ,相关问题, 数据_变量_内存 ,相关问题,对象)_第5张图片

你可能感兴趣的:(笔记,javascript)