初识JavaScript (1)

JavaScript概念问题

1. 基础认识

1. 什么是数据?

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

2. 什么是内存?

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

3. 什么是变量?

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

4. 问题:

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

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

4.2 内存生命周期

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

4.3 释放内存

  • 局部变量: 函数执行完自动释放
  • 对象: 成为垃圾对象==>垃圾回收器回收

2. javascript 基本类型

1. 分类

1.1 基本(值)类型

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

1.2 对象(引用)类型

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

2. 类型判断

2.1 typeof :

  • 可以判断: undefined/ 数值 / 字符串 / 布尔值 / function
  • 不能判断: null与object object与array

2.2 instanceof :

  • 判断对象的具体类型

2.3 === :

  • 可以判断: undefined, null

3. 需掌握问题:

3.1 undefined与null的区别?

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

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

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

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

3.3.1 数据的类型

  • 基本类型
  • 对象类型

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

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

3. javaScript 核心概念介绍

1. 对象

1.1 什么是对象?

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

1.2 为什么要用对象?

  • 统一管理多个数据

1.3 对象的组成

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

1.4 如何访问对象内部数据?

  • .属性名: 编码简单, 有时不能用
  • [‘属性名’]: 编码麻烦, 能通用

1.5 问题:

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

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

2. 函数

2.1 什么是函数?

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

2.2 为什么要用函数?

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

2.3 如何定义函数?

  • 函数声明
  • 表达式

2.4 如何调用(执行)函数?

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

2.5 问题:

2.5.1. 什么函数才是回调函数?
  1. 你定义的
  2. 你没有调
  3. 但最终它执行了(在某个时刻或某个条件下)
2.5.2 常见的回调函数?
  • dom事件回调函数 ==>发生事件的dom元素
  • 定时器回调函数 ===>window
  • ajax请求回调函数(后面讲)
  • 生命周期回调函数(后面讲)

3. IIFE 匿名函数自调用

3.1 理解

  • 全称: Immediately-Invoked Function Expression

3.2 作用

  • 隐藏实现
  • 不会污染外部(全局)命名空间
  • 用它来编码js模块
(function(x,y){
    alert(x+y);
    return x+y;
}(3,4));

4. this 指针

4.1 this是什么?

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

4.2 如何确定this的值?

样例:

  • test(): window
  • p.test(): p
  • new test(): 新创建的对象
  • p.call(obj): obj

4. javaScript 编写规范

  1. js一条语句的后面可以不加分号
  2. 是否加分号是编码风格问题, 没有应该不应该,只有你自己喜欢不喜欢
  3. 在下面2种情况下不加分号会有问题:
    • 小括号开头的前一条语句
    • 中方括号开头的前一条语句
    • 解决办法: 在行首加分号
  4. 强有力的例子: vue.js库
  5. 知乎热议: https://www.zhihu.com/question/20298345

猜你喜欢

转载自blog.csdn.net/z_yemu/article/details/88706249
今日推荐