JS高级学习day1

JS学习day1

作用域

  • 作用域规定了变量能够被访问的“范围”,离开了这个范围变量便不能再被访问

作用域分为全局作用域和局部作用域

局部作用域

局部作用域又分为函数作用域和块作用域

  • 函数作用域:在函数内部声明的变量只能在函数内部访问,外部无法直接访问

  • 块作用域 :被{}包裹起来的区域称为块作用域,代码块声明的变量外部有可能无法访问

函数作用域

总结
1. 函数内部声明的变量,在函数外部无法访问
2. 函数的参数也是函数内部的局部变量
3. 不同函数内部声明的变量无法互相访问
4. 函数执行完毕后,函数内部的变量实际被清空了

块作用域

总结

  1. let声明的变量会产生块作用域,var不会产生块作用域
  2. const 声明的常量也会产生块作用域
  3. 不同代码块之间的变量无法相互访问
  4. 推荐使用let或const
    注:开发中 let和 const 经常不加区分的使用,如果担心某个值会不小被修改时,则只能使用 const 声明成常量。

全局作用域

  <script>标签和.js文件的最外层就是所谓的全局作用域,在此声明的变量在函数内部也可以被访问

作用域链

  1. 作用域链的本质是底层的变量查找机制
  2. 作用域链的查找规则:
    > 会优先查找当前函数作用域的变量
    > 查找不到则会依次逐级查找父级作用域直到全局作用域

JS垃圾回收机制

  1. 垃圾回收机制(Garbage Collection) 简称GC
    JS中内存的分配和回收都是自动完成的,内存不使用的时候会被垃圾回收器自动回收

  2. 内存泄漏:不再用到的内存,没有及时释放,就叫做内存泄漏

  3. 内存的生命周期
    内存分配、内存使用、内存回收
    全局变量一般在页面关闭时才会回收;一般情况下局部变量的值,不用了,会被自动回收掉

  4. 垃圾回收算法:引用计数法和标记清除法(常用)

    • IE采用的引用计数算法, 定义“内存不再使用”的标准很简单,就是看一个对象是否有指向它的引用。
      算法:
      1. 跟踪记录每个值被引用的次数。
      2. 如果这个值的被引用了一次,那么就记录次数1
      3. 多次引用会累加。
      4. 如果减少一个引用就减1。
      5. 如果引用次数是0 ,则释放内存。

    引用计数法存在致命的问题嵌套引用
    嵌套引用会导致内存泄漏

    • 标记清除法
      1. 核心思想:将"不再使用的对象"定义为"无法达到的对象"
      2. 就是从根部(在JS中就是全局对象)出发定时扫描内存中的对象。 凡是能从根部到达的对象,都是还需要使用的。
      3. 那些无法由根部出发触及到的对象被标记为不再使用,稍后进 行回收。

闭包

  • 概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域
    - 简单理解为 闭包 = 内层函数 + 外层函数的变量
  • 作用: 封闭数据,可实现数据的私有,外部也可访问函数内部的变量
  • 闭包可能引起的问题: 内存泄漏

函数进阶

动态参数

  • 当不确定用户输入多少个参数时可使用动态参数
function fun(){
   	// 所有的实参都会传入arguments伪数组中,arguments只存在于函数中  
	let sum = 0
	for(let i = 0;i<arguments.length;i++){
   
		sum += arguments[i]
	}
	console.log(sum)
}
fun(1,2,3)
fun(1,2)
  • 当确定用户至少输入几个参数时可使用剩余参数
function fun(a,b...arry){
   	//arry是一个真数组
}

开发中提倡使用剩余参数

展开运算符

const str = [
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值