JavaScript基本知识整理(循序渐进,有条不紊)

本文旨在帮助读者回顾最基础的JavaScript有些什么。尚不涉及ES6相关知识点。
(ง •_•)ง加油5分钟读完,助你更上一层楼咯~

1.数据,内存和变量分别是什么?

1.什么是数据?
存储在内存中代表特定信息的’东东’,本质上是0101…
2.什么是内存?
内存条可存储数据的空间(临时的)
3.什么是变量?
可变化的量,由变量名和变量值组成
每个变量都对应一小块内存,变量名用来查找对应的内存,变量值就是内存中保存的数据
4.内存,数据,变量三者之间的关系
内存中除了它存储的数据之外还有一个地址值
变量是内存的标识,内存是用来存储数据的空间
内存中所有操作的目标:数据

2.数据类型

基本(值)类型

基本类型保存的是该基本类型的实际数据

String:任意字符串
number:任意数字
boolean:true/false
undefined:undefined
null: null

undefinednull的区别:
undefined是定义了未赋值,null是定义了赋值为空值,一般适用于回收垃圾对象

对象(引用类型)

引用对象保存的是地址值(该知识点涉及到堆内存与栈内存)

Object:对象 ,函数和数组也为对象
Function:函数,一种特别的对象,可以执行其中的代码
Array:数组,一种特别的对象(属性有数值下标),数组的内部数据是有序的

什么是对象?
对象和变量一样都是存储数据的,区别是对象可以存储多个数据

对象的组成是属性名和属性值,属性名是字符串,属性值可以是任意类型的数据,如果是函数,则称作方法

3.什么是回调函数?

1.你定义的
2.你没有调用
3.但最终它执行了
常见的现在2个DOM事件回调函数:比如点击事件
和定时器回调函数setTimeout(回调函数,间隔使用的时间)
4.回调代码会异步执行

4.为什么JavaScript是单线程?

作为浏览器脚本语言,Javascript的主要用途是与用户互动,以及操作DOM,
这决定了它只能是单线程,否则会带来很复杂的同步问题
比如两个线程1和2 1要更新p标签,2要删除p标签,那么线程切换的时候线程1判定p还在会去更新,但是结果报错了

5.DOM和BOM是什么?

DOM

全称Document Object Model

文档对象模型
可以通过JavaScript操作网页
DOM模型用一个逻辑树来表示一个文档,树的每个分支的终点都是一个节点(node),每个节点都包含着对象(objects)。DOM的方法(methods)让你可以用特定方式操作这个树,用这些方法你可以改变文档的结构、样式或者内容。节点可以关联上事件处理器,一旦某一事件被触发了,那些事件处理器就会被执行。

节点:网页中的每一个部分都是节点
但是具体节点不同
文档节点:整个HTML文档
元素节点:HTML文档中的HTML标签
属性节点:元素的属性
文本节点:HTML标签中的文本内容

BOM

全称Browser Object Model
浏览器对象模型
BOM可以使我们通过JS来操作浏览器
在BOM 中为我们提供了一组对象用来完成对浏览器的操作

对象名解释
Window代表的是整个浏览器的窗口,同时也是网页中的全局对象
Location代表当前浏览器的地址栏信息,通过Location可以获取地址栏信息,或者操作浏览器跳转页面
Screen代表用户的屏幕的信息,通过该对象可以获取到用户的显示器的相关的信息
History代表浏览器的历史记录,该操作只有当次访问有效

这些BOM对象在浏览器中作为Window对象的属性保存的.
可以通过window对象来使用,也可以直接使用

6.正则表达式

我们用正则表达式来检查一个字符串是否符合规则

创建正则表达式的对象:
var reg =new RegExp(“正则表达式”,“匹配模式”)
或者reg = /字面量/ 匹配模式 (更为推荐)
在构造函数中可以传递匹配模式作为第二个参数,可以是i(忽略大小写)或者 g(全局匹配模式)

正则对象的方法
test()检查一个对象是否符合正则表达式的规则,符合就是true,不符合就是false,严格区分大小写

reg = /a{3,}/ 表示a出现3次以上
reg = /a{1,3}/ 表示a出现1到3次
reg = /(a){3}/ 表示a出现的次数是3次
reg = /a|b/ 表示a或者b
reg = /ab+c/ 至少有一个b
reg = /ab*c/ b有0个或以上
reg = /ab?c/ 只能有0个或一个b
reg = /^a/ 检查一个字符串是否以a开头
reg = /a$/ 表示以a结尾
.表示任意字符 \.表示.
\w任意字母数字下划线 \W相反
\d 任意数字 \D正好相反
\s 空格
\b单词边界 \B除了单词边界 想要区分child 和children \bchild\b

下面是运用的正则表达式规定一个邮件格式的例子:

 <script>
        /*1.开头是任意字母数字下划线可以跟着点如abc.efg
            2.@
            3.任意字母数字
            4. 必须以点 + 任意字母2-5位结尾
 
        */
        var emailreg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
        var email = "abc@qq.com";

        console.log(emailreg.test(email)) //true

    </script>

7.argument关键字

在调用函数时,浏览器每次都会传递进两个隐含的参数;
1.函数的上下文对象
2.封装实参的对象arguments
-argument是一个类数组对象,它可以通过索引来操作数据,也可以获取长度
-在调用函数时,我们所传递的实参都会在argument中保存
-arguments.length可以获取实参的长度
-即使不定义形参也可以通过argument来使用实参,只不过比较麻烦
arguments[0]表示第一个实参
-arguments.callee这个属性对应当前正在执行的函数对象自己,也就是自己调用自己。

总结:arguments存储了所有该函数的实参,可以通过下标索引到每一个实参,也可以知道该类数组的长度,但是无法使用数组的方法.

8.call和apply的区别是什么?

fun.call() 和fun.apply() 都等于fun()
当对函数调用call和apply都会调用函数执行
在调用call和apply时可以将一个对象指定
此时这个对象将会成为函数执行时的this,因为直接fun()函数中的this 是window
fun.call(obj,1,2)方法可以将实参在对象之后依次传递
apply方法需要将实参封装到一个数组中统一传递fun.apply(obj,[2,3])
this的情况
1.在全局中以函数的形式调用,如fun(),this永远是指向window
2.作为对象方法的形式调用时,如obj.fun(),this指向调用方法的对象obj
3.以构造函数的形式调用时,如var obj1 = new Objet(实参1,实参2),this指向新创建的对象obj1
4.使用call和apply调用时,如:fun.call(实参1,实参2),this是指定的那个对象

9.何为构造函数?

创建一个构造函数,专门用来创建特殊对象
构造函数习惯上首字母大写

构造函数和普通函数的区别就是调用方式的不同
普通函数是直接调用,而构造函数需要使用new关键字调用

构造函数的执行流程
1.立刻创建一格新的对象
2.将新建的对象设置为函数中的this,在构造函数中可以使用this来指向新建的对象
3.逐行执行函数中的代码
4将新建的对象作为返回值返回

使用同一个构造函数创建的对象我们称之为一类对象

使用instenceof可以检查对象是否是一个类的实例
console.log(对象 instenceof 构造函数)
所有的对象都是Object的后代,

10.作用域是什么?

JS 中有两个作用域
1.全局作用域:
-直接编写在script标签中的JS代码,都在全局作用域
-他在页面打开时创建,在页面关闭时销毁
-在全局作用域中有一个全局对象window,代表浏览器的窗口由浏览器创建我们可以直接使用
-创建的对象都会作为window对象的属性保存

2.函数作用域:
-调用函数时创建函数作用域,函数执行完毕后,函数作用域销毁
-每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
-在函数作用域中可以访问到全局作用域的变量,反过来不行
-定义形参就相当于在函数作用域中申明了变量

此外在ES6还推出了块级作用域,不过那个留到ES6一起总结吧~😙

本期JS知识点分享先到这里,其实还有好几个点没讲,冒泡,原型和一些细碎的点…那么留到下一次分享给大家咯O(∩_∩)O!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值