JS笔记(二)

九、JS作用域

9.1 作用域概念

作用域:就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序可靠性,减少命名冲突。
作用域分为两类(es6之前)

  • 全局作用域:即整个script标签或者是一个单独的JS文件。

  • 局部作用域:在函数内部即为局部作用域,即这个代码的名字和效果只在函数内部起效果。

若在全局作用域中和局部作用域中各有一个’var num=10’,他们不会互相影响。

9.2变量的作用域

根据变量不同也可分为两种变量

  • 全局变量:在全局作用域下声明的变量,注:在函数里面为声明直接赋值的变量也为全局变量。
  • 局部变量:在局部作用域下声明的变量(或者在函数内部的变量),只能在函数内部使用。(函数的形参也是局部变量)

下图中num1为局部变量,num2为全局变量
在这里插入图片描述
全局变量和局部变量区别:全局变量只有在浏览器关闭使才会销毁,比较占内存;局部变量在程序执行完毕后即销毁,比较节约内存。

9.3块级作用域

JS没有块级作用域,也是在es6的时候新增的块级作用域,大括号{}包括的就是块级作用域。意思就是大括号里面声明的变量外边不能引用。

9.4作用域链

  • 只要是代码,就至少有一个作用域
  • 写在函数内部的局部作用域
  • 如果函数里面还有函数,那么在这个作用域中又可以诞生一个新作用域
  • 根据在内部函数可以访问外部函数变量这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链。

内部函数访问外部函数的变量,采取的是链式查找的方式决定取哪个值 就近原则
如下图,先查找内部函数外层的函数看看有无num,若有则访问它,若没有再访问外一层的全局作用域中有无num,下图输出为20
在这里插入图片描述

案例
在这里插入图片描述
输出结果为123.

十、JS预解析

10.1 预解析(重点)

js引擎运行js分为两步:

  • 预解析:会把js里面的var还有function提升到当前作用域的最前面。
  • 代码执行:按照代码书写顺序从上往下执行

预解析分为两种:①变量预解析:就是把变量声明提升到当前作用域的最前面,不提升赋值
②函数预解析:就是把所有函数声明提升到当前作用域最前面,不调用函数

在这里插入图片描述
上图报错是因为根据预解析相当于先输出再赋值。

在这里插入图片描述
上图可以运行是因为根据函数与解析可知

在这里插入图片描述
上图报错是因为声明函数的var被提前,函数主体没有提前,总的来说匿名表达式会被报错

经典案例
(一)
在这里插入图片描述
先预解析,再根据作用域链分析最后结果:undefined;20。

(二)难点
在这里插入图片描述

在这里插入图片描述
var a=b=c=9,只有a声明,b和c集体赋值,看作全局变量,输出结果为9,9,9, 9,9,undefined。

十一、对象

对象是一个具体的事物,在JS中,对象是一组无序相关属性方法的集合,例如字符串,数值,数组,函数等等。
对象由属性方法构成。

  • 属性:事物的特征,在对象中用属性表示;(常用名词)
  • 方法:事物的行为,在对象中用方法来表示。(常用动词)
    对象的作用:
    保存个人信息的时候对象作用更大

变量、属性、函数、方法的区别
变量需要单独声明并赋值,使用的时候可直接写变量名;属性在对象中不需要声明,使用的时候必须是 对象.属性
函数是单独声明,调用时 函数名();方法在对象里面,调用时 对象。方法()

11.1 创建对象的三种方式

①利用字面量创建对象:就是用{}包含对象的属性和方法。
在这里插入图片描述
(一)多个属性值或者方法之间用逗号隔开,方法后面跟的是一个匿名函数。
(二)调用函数里面的属性,采取 对象名.属性名,或者对象名【‘属性名‘】
(三)调用对象的方法,对象名.方法名(),因为函数后面要加个括号。

②利用new Object创建对象
在这里插入图片描述
多个属性值或者方法之间用分号隔开,属性名与属性值间用等号连接

③利用构造函数创建对象
就是把对象里面一些相同的属性和方法抽象出来封装到函数里面,可以一次创建多个对象。

构造函数的语法格式

function 构造函数名(){
   
this.属性=值&#x
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值