美文网首页高程js总结小tips
js变量、作用域和内存问题

js变量、作用域和内存问题

作者: balahoo | 来源:发表于2019-02-23 15:27 被阅读0次

基本类型和引用类型的值

    基本类型是简单的数据段,可以操作保存在变量中的值。
    引用类型是那些可能有多个值构成的对象,她的值是保存在内存中。
*只能给引用类型动态的添加属性

1.复制变量值的区别:
基本类型复制的只是一个副本,两个值虽然相同但是是完全独立的。互不影响
引用类型复制之后指向的是同一个对象。改变其中一个变量,就会影响另一个变量。

复制操作结束后,两个变量实际上将引用同一个对象

2.传递参数:
*访问变量有按值按引用两种方式,而参数只能按值传递。
基本类型传递参数:
    num是函数的局部变量,调用函数时,count作为参数被传递给了函数,10被复制给了参数num,在函数内部,参数num被加了10,但这不会影响函数外部的count变量。

基本类型传递参数

引用类型传递参数:

引用类型对象也是按值传递

即使在函数内部修改了参数的值,但原始的引用仍然保持未变。
加深理解

3.检测类型
*基本数据类型使用typeOf操作符。
*引用类型使用instanceof操作符。(是引用类型都会返回true,基本类型都返回false)
alert(person instanceof Object);   //变量person是Object吗
alert(person instanceof Array);   //变量person是Array吗
alert(person instanceof RegExp);   //变量person是RegExp吗

执行环境与作用域

全局环境

*内部环境可以通过作用域链访问所有的外部环境 。但是外部环境不能访问任何内部环境的变量和函数。(局部环境会开始在自己的变量对象中搜索变量名和函数名,如果搜索不到则搜索上一级作用域链)

延长作用域链
with语句
try-catch语句的catch块

没有块级作用域
js没有块级作用域。
if语句和for语句中创建的变量在循环和判断结束后,也依然会存在于外部的执行环境中。

1.声明变量

除非不声明color,否则不无访问局部环境的变量(不声明就是全局变量)

2.查询标识符:
实例比较(不断向外查找,一旦找到最近的就停止搜索)

垃圾收集

js具有自动垃圾收集机制。
原理:找出那些不再继续使用的变量,然后释放其占用的内存。

js中变量的生命周期

标记清除(最常用的垃圾收集方式)
引用计数(不太常见的)

return问题

相关文章

  • javascript高级程序设计读书笔记(四)

    变量,作用域,和内存的问题 javascript高级程序设计读书笔记(四) 变量,作用域,和内存的问题 变量 不存...

  • js变量、作用域和内存问题

    基本类型和引用类型的值 基本类型是简单的数据段,可以操作保存在变量中的值。 引用类型是那些可能有多个值构成的...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • JS变量,作用域,内存问题

    基本类型和引用类型 js中变量类型分为两大类。基本类型和引用类型。基本类型指值直接保存在变量本地的类型。引用类型变...

  • js 执行上下文,作用域,变量内存管理

    js 执行上下文,作用域,变量内存管理 JS中变量的定义在内存中包括三个部分:* 变量标示(变量标示存储在内存的栈...

  • JS高级(第三版)第4章知识点总结

    变量、作用域和内存问题 1.理解基本类型和引用类型的值2.理解执行环境3.理解垃圾收集 变量 1.JS的变量为松散...

  • JS回顾变量、作用域、内存问题

    基本类型和引用类型的值属性的动态复制变量值传递参数检测类型 执行环境与作用域延长作用域链没有块级作用域声明变量提升...

  • 变量、作用域和内存问题

    基本类型和引用类型的值 基本类型值指的是简单的数据段;引用类型值指那些可能由多个值构成的对象。不能给基本类型添加属...

  • 变量、作用域和内存问题

    一、变量 1、变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是 简单的数据段,而引用类型...

  • 变量,作用域和内存问题

    基本类型和引用类型的值 变量可能包含两种不同数据类型的值:基础类型值和引用类型值。基本类型是按值访问的,因为可以操...

网友评论

    本文标题:js变量、作用域和内存问题

    本文链接:https://www.haomeiwen.com/subject/npdpyqtx.html