zoukankan      html  css  js  c++  java
  • javascript 基础二

      接着来,上第二篇笔记,欢迎各位指出错误~

      同时附上evernote公开链接

      1、变量:js变量松散类型的本质,决定了变量只是在特定时间用于保存特定值的一个名字而已。

     
      2、变量可能包含的两种数据类型的值:基本类型值和引用类型值。
    1. 基本类型值保存在栈内存中简单的数据段,即这种值保存在内存中的一个位置。
      • 基本数据类型(5种)的值在内存中占用固定的大小,保存基本数据类型值得变量按值访问,实际操作的是保存的值。
    2. 引用类型值保存在堆内存中的对象,变量中保存的实际是一个指针,这个指针指向内存中的另一个位置,该位置保存着对象。
      • 引用类型的值大小不固定,不能保存在栈内存中,通过访问变量保存的指针来访问保存在堆内存中的对象,是按引用访问
      3、变量的动态属性
    1. 对于保存引用类型值的变量,可以为其添加属性和方法,也可以删除(delete obj[someAttr])属性和方法。
      4、复制变量值 
     
         注意区分基本类型值和引用类型值得复制,前者复制真实的值,后者复制的是指针,并有多个变量指向同一个对象。
     
      5、js函数传递参数
    1. 函数传参都是按照值传递
    2. 在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(即命名参数,或者说是arguments对象的某一个元素)
    3. 在向参数传递引用类型的值是,会把这个值在内存中的地址复制给一个局部变量(命名参数,即传递的是指针),因此这个局部变量的变换会反映在函数外部。
    4. 可以把函数的参数想象为局部变量,参数在函数退出时立即销毁。
      6、检测类型instanceof)
    1. 基本数据类型用typeof检测,其中检测返回"Object"时,数据类型可能是null或者Object。
    2. 引用数据类型用instanceof检测,返回值为true或者false  eg:   var car={}; console.log(car instanceof Object)//返回true
    3. 使用instanceof检测基本数据类型的值时,永远返回false!
    4. 因为instanceof检测基本类型时返回false,故可以就此判断typeof中结果为Object的null和Object类型了。
    5. 函数是Object
      7、延长作用域链
         当执行流进入下列任何一个语句是,作用域链就会延长
    1. try-catch的catch语句中
    2. with语句   with语句中定义的变量,在with外也能访问
      8、没有块级作用域
    1. 没有块级作用域
      1. 块级作用域,{ }里面定义的变量,{ }外面访问不到
    2. 只有函数作用域
      1. 函数内定义的变量,函数外访问不到
    3. 利用闭包,可以模拟块级作用域
      1. eg:  function a(){ (function b(){ var c =1;})(); console.log(c); } a();  //报错,c为声明
      2. 多使用闭包,能避免命名冲突
     
      9、垃圾回收机制
    • 原理:找出不再使用的变量,释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间),周期性的执行这一操作。
    1. 策略有二:标记清除、引用计数
      1. 标记清除:垃圾收集器在运行时给存储在内存中的所有变量都加上标记,然后去掉环境中的变量和被环境中的变量引用的变量的标记,最后去除带有标记的变量,销毁带标识的值和回收他们的所占的内存空间。
      2. 引用计数:跟踪记录每个值被引用的次数。
      10、管理内存
    1. 优化内存的最佳方式:为执行中的代码保存必要的数据,一旦数据不再有用,将其值设置为null来释放其引用--引用解除
    2. 引用解除不意味着自动回收该值所占的内存,真正目的是让值脱离执行环境,便于垃圾收集器下次运行时将其回收。
  • 相关阅读:
    PHP深度学习参考地址
    随手记两个链接,关于自适应屏幕显示的
    数据库查询,指定查询结果某列为固定值
    $('#id").load
    【转】Caused by: android.os.NetworkOnMainThreadException错误解决办法
    @Autowired注入DAO对象为NULL
    1-sqoop
    1-kylin架构
    1-kudu架构原理读写流程
    2、apache druid界面说明
  • 原文地址:https://www.cnblogs.com/pidianpidian/p/3725730.html
Copyright © 2011-2022 走看看