zoukankan      html  css  js  c++  java
  • 【JavaScript知识点二】JavaScript 变量

    【JavaScript知识点二】JavaScript 变量

    1. 命名

    1-1 方法

    • 匈牙利命名法:变量名 = 类型 + 对象描述;Int整型 i 、Float浮点 fl 、Boolean布尔 b 、String字符串s 、Array数组 a 、Object对象 o、Function函数 fn、Regular Expression正则 re
    • 驼峰命名法:
      ①全部小写 单词与单词间用下划线表示
      ②大小写混合:
      大驼峰——每个单词首字母大写
      小驼峰——第一个单词首字母小写,其它单词首字母大写

    1-2 规则

    • 首字符:英文字母或下划线
    • 组成:英文字母、数字、下划线
    • 禁忌:JavaScript关键字与保留字

    2. 声明

    2-1 显式声明

    • var 变量名

    2-2 陋习

    • 没有类型
    • 重复声明
    • 隐式声明
    • 不声明直接赋值

    2-3 正解

    • 先声明,后读写
    • 先赋值,后运算

    3. 变量类型

    3-1 值类型

    • 占用空间固定,保存在栈中
    • 保存与复制的是值本身
    • 使用typeof检测数据的类型
    • 基本类型数据是值类型

    3-2 引用类型

    • 占用空间不固定,保存在堆中
    • 保存与复制的是指向对象的一个指针
    • 使用instanceof检测数据的类型
    • 使用new()方法构造出的对象是引用类型
      注:在js中,
      (1)值类型:数值、布尔值、null、undefined
      (2)引用类型:对象、数组、函数

    4. 作用域

    4-1 全局变量

    • 包含:在函数体外定义的变量、在函数内定义的无var的变量
    • 调用:任意位置

    4-2 局部变量

    • 包含:在函数内使用var声明的变量、函数的形参
    • 调用:当前函数内部

    4-3 优先级

    • 局部变量高于同名全局变量
    • 参数变量高于同名全局变量
    • 局部变量高于同名参数变量

    4-4 特性

    • 忽略块级作用域
    • 全局变量是全局对象的属性
    • 局部变量是调用对象的属性
    • 作用域链:
      ①内层函数可访问外层函数的局域变量
      ②外层函数不能访问内层函数的局域变量
    • 声明周期:
      ①全局变量——除非被显式删除,否则一直存在
      ②局部变量——自声明起至函数运行完毕或显式删除
      ③回收机制——标记清除、引用计数

    注:
    1.标记清除
    标记清除简单的来说就是给各个变量名打上 YES or NO的标签以供JS引擎进行处理(当然打什么标签自己理解即可)。在和执行上下文类似的的环境中当变量名称进入环境的时候,那么变量会被打上 YES。一般来说是绝对不会释放被打上 YES 标签的变量内存的,一旦变量在出了该环境时,变会被打上 NO 标签(和作用域貌似有点像),JS引擎会在一定时间间隔或者设置的时间来进行扫描,对NO标签的进行剔除以释放其内存。
    2.引用计数(查了很多资料,还是无法找到其真正的计算方式)
    一般来说,引用计数的含义是跟踪记录每个值被引用的次数。当声明一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数便是1,如果同一个值又被赋给另一个变量,则该值的引用次数加1,相反,如果包含对这个值引用的变量又取得了另一个值,则这个值的引用次数减1。当这个值的引用次数为0时,说明没有办法访问到它了,因而可以将其占用的内存空间回收。
    对于引用计数,我们需要知道如果具有循环引用,那么其计数问题就会暴露,导致计数永远不为0而无法释放内存,导致内存泄露,具体事例如下,如果e.g.1使用引用计数的话就会导致问题,内存无法被释放,导致内存无故消耗占用。

    e.g.1
    function(){
    var a = {};
    var b = {};
    b.pro = a;
    a.pro=b;
    }
    
  • 相关阅读:
    prototype属性
    mui 结束时间不能大于开始时间
    DOM方式操作元素属性
    用户输入数字,自动生成钱值
    isNaN函数,判断其参数是否为数字类型
    switch 循环
    淘宝下单高并发解决方案(转)
    NLog文章系列——如何配置NLog(转)
    使用Nlog记录日志到数据库
    NLog文章系列——如何配置NLog
  • 原文地址:https://www.cnblogs.com/reamd/p/4944062.html
Copyright © 2011-2022 走看看