JavaScript变量

一、命名

  (一)、方法

    1、匈牙利命名法:变量名=类型+对象描述

      Int 整型:i,Float 浮点:fl,Boolean 布尔:b,String 字符串:s,Array 数组:a,Object 对象:o,Function 函数 :fn,Regular Expression 正则:re

    2、驼峰命名法://大小写混合转全部大写的方法

     (1)、全部小写:单词与单词间使用下划线分割    //first_name

     (2)、大小写混合

        2.1.1、大驼峰:每个单词首字母大写    //FirstName

        2.1.2、小驼峰:第一个单词小写,其余的大写    //firstName

  (二)、规则

    1、音节符:英文字母或下划线

    2、组成:英文字母、数组、下划线

    3、禁忌:JavaScript关键字、保留字  //相关链接

二、声明

  (一)、显示声明

    var 变量名,es6:let 变量名,const 变量名

  (二)、陋习

    1、没有类型    //例如数组、对象等

    2、重复声明

    3、隐式声明

    4、不声明直接赋值

  (三)、正确操作

    1、先声明,后读写;先赋值,后运算

三、变量类型

  (一)、值类型

    1、占用空间固定,保存于栈中

    2、保存与复制的是值本身

    3、使用typeof检测数据类型

    4、基本数据类型是值类型

  (二)、引用类型

    1、占用空间不固定,保存于堆中

    2、保存与复制的是指向对象的一个指针

    3、使用instanceof检测数据类型

    4、使用new()方法构造出的对象是引用型

四、作用域

  (一)、全局变量:在任何位置调用

    1、在函数体外最外层定义的变量

    2、在函数内部定义的无var、let、const声明的变量

  (二)、局部变量:当前函数内部使用

    1、在函数体内用var、let、const声明的变量

    2、函数的参数变量

  (三)、优先级:局部变量 > 参数变量 > 全局变量

    1、局部变量高于同名全局变量

    2、参数变量高于同名全局变量

    3、局部变量高于同名参数变量

  (四)、特性

    1、var无块级作用域,es6新增let块级作用域定义变量

    2、全局变量是全局对象的属性,局部变量是调用对象的属性

    3、作用域链    //相关说明

     (1)、内层函数可以访问外层函数的局部变量

     (2)、外层函数不能访问内层函数的局部变量

    4、声明周期

     (1)、全局变量:除非被显示删除,否则一直存在    //var声明的全局变量无法使用delete删除

     (2)、局部变量:自声明起到函数运行结束或被显示删除

     (3)、回收机制:标记清楚、引用计数    //相关说明

原文地址:https://www.cnblogs.com/detanx/p/JavaScriptVar.html