【JavaScript学习第四天】—讲述JS学习历程的知识分享!

前言

本篇文章对arg,函数、作用域以及预解析的概念以及理解,这也代表相对基础的JS知识差不多结束了,在看文章之余也要多多练习观看相关视频加以理解!

一、arguments参数

概念:当不确定有多少个参数传递的时候,可以用 arguments 来获取参数,arguments 对象中存储了传递的所有实参

其实arguments 是一个伪数组,因此可以进行遍历。伪数组的特点如下

  • 具有 length 属性

  • 按索引方式储存数据

  • 不具有数组的 push、pop 等等方法

二、函数的声明

  • 利用function关键字声明(命名函数)
  • 函数表达式(匿名函数)

三、作用域

概念:一段代码中所用到的名字并不总是有效的,而限定这个名字有效性的范围就是作用域

作用:提高程序的可靠性,减少冲突

分类:①全局作用域作用于script标签内②局部作用域作用于函数内的代码环境,也称为函数作用域

那么变量在不同作用域也有了不同的分类

全局变量:在全局作用域下声明的变量叫做全局变量(在函数外部定义的变量)

  • 全局变量在代码的任何位置都可以使用

  • 全局作用域下,var 声明的变量是全局变量

  • 一般情况下,函数内不使用 var 声明的变量也是全局变量(不建议使用)

局部变量:在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量)

  • 局部变量只能在该函数内部使用

  • 在函数内部 var 声明的变量是局部变量

  • 函数的形参实际上也是局部变量

两者的区别:

  • 全局变量:在任何一个地方都可以使用,只有在浏览器关闭时才会被销毁,因此比较占内存

  • 局部变量:只在函数内部使用,当其所在的代码块被执行时,会被初始化。当代码块运行结束后,就会被销毁,因此更节省内存空间

四、作用域链

概念:内部函数可以访问外部函数的变量,这种实现机制就是作用域链,这种查找方式就叫链式查找

var age = 19;
function fn1() { // 外部函数
    var age = 18;
    function fn2() { // 内部函数
        console.log(age); // 就近原则
    }
}

采取就近原则的方式来查找变量最终的值

五、预解析

概念:JS 解析器在运行代码的时候分为两步:预解析和代码执行

  • 预解析:在当前作用域下, JS 代码执行之前,浏览器会默认把当前作用域下带有 var 和 function 声明的变量在内存中进行提前声明或者定义(提升到当前作用域的最前面)

  • 代码执行: 从上到下执行JS语句

变量预解析:变量提升只提升声明,不提升赋值

console.log(age); // 代码运行分为先预解析再代码执行,很明显这一句是代码执行,那前面肯定也就进行了预解析
var age = 19;

函数预解析:函数声明代表函数整体,所以函数提升后,函数名代表整个函数,但是函数并没有被调用!

问题:用函数表达式的形式声明函数问题

// fn is not a function
fn();
// 用 var 声明的会被当做变量进行预解析
var  fn = function() {
    console.log('hello world');
}

六、对象

此对象非彼对象~

概念:对象是一组无序的相关属性和方法的集合

对象由属性和方法的形式组成

创建对象的三种方式

  1. 使用对象字面量创建对象
  2. 利用new Object()创建对象
  3. 利用构造函数创建对象

前两种方式只能一次创建一个对象,详解一下第三种方式

构造函数和对象的关系

  • 构造函数里面封装的不是普通代码(例如求和),而是对象

  • 构造函数就是把对象里面相同的属性和方法抽象出来放到函数里面

  • 通过构造函数可以创建对象

  • 构造函数指某一类,例如动物,人,对象指类中的某一个,例如小狗,小花

  • 利用构造函数创建对象的过程称为实例化对象

有不明白的或者有其他问题的可以评论区留言噢

今天的知识分享就到这里啦~希望大家在这能学到知识一起分享一起进步,成为更好的自己!

当然,如果觉得写的还不错的可以动动发财的小手点个赞~

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值