javascript之变量

187 阅读5分钟

变量

由变量提出下面几个问题。

  1. 什么是变量?

  2. 变量有什么用?

  3. 如何使用变量?

  4. 变量中有哪些潜规则?

根据以上问题,逐一的整理一下自己所学,也欢迎大家补充有关变量相关的知识。

什么是变量?

变量是一块内存空间,用来存储数据的。

那为什么是内存空间呢?为什么不是硬盘空间呢? 下面来探究一下内存和硬盘的优劣势。

  • 内存:读取速度快,内容易丢失
  • 硬盘:读取速度慢,但是不易丢失

如果我们用硬盘来存储的话,那么代码的运行速度。。。想想自己都会崩溃。所以我们程序用内存进行存储,读取速度快,刷新页面后之前的数据就丢失了会重新加载新的数据。硬盘通常来存什么呢?我们电脑文件,重启后不会消失仍然保存的文件就是存在我们硬盘当中的。

计算机程序的运行,仅与内存打交道

变量有什么用?

变量的作用就是用于存储数据的。 在没有变量时,我们没有办法去保存我们的数据,但是有了变量我们的数据可以保存起来,等到需要使用该数据的时候在去使用。

//直接输出的数据
        console.log(11);
        //现在不想要直接输出数据,想把数据先保存下来,后面再使用
        var a;
        a = 11;
        //这样数字字面量11就保存到变量a里面啦,后面我们需要使用数据11的话,直接用变量a就可以啦

在这里引申出来一个我一直出错的一个问题。 变量和字面量的区别是什么?

字面量是我们直接书写出来的数据,比如123称为数字字面量,'123'称为字符串字面量,{}称为对象字面量;将这些直接书写出来的数据存储起来,存储的容器就是变量。

字面量可以直接输出。 但是变量中未经声明直接使用的话是会报错滴。

        console.log(123); //这里的123就是数字字面量
        var a = 123;
        console.log(a); // a是变量 也可以输出
        console.log(b); //报错 前面没有声明变量b直接使用就会报错

如何使用变量

  • 使用变量分为两步
  1. 变量声明
var 变量名;
var a; // 变量声明的过程  开一个新的内存空间a

变量声明后,它的值为undefined 如果声明变量,不对其进行赋值。 说明其是未被定义的。 输出只声明为赋值的变量,结果是undefined。

var a; 
console.log(a); // undefined
  1. 变量赋值

向变量的内存空间中存放数据

a = 1; // 变量赋值过程  将1赋给a

变量声明和变量赋值可以称之为初始化变量

  • 变量的值是可变的

变量可以被重新赋值,新的值会覆盖原来的值

        var a = 1;
         console.log(a); // 1
         a = 2; 
         console.log(a); // 2

        var a = "hello";
        var b = a; // 将变量a的数据复制到变量b中
        b = "world"; // 不会影响a
        console.log(a, b); // "hello" "world"
  • 变量的名称

在开发中,凡是需要自行命名的位置,叫做标识符

  • 变量命名的规则

一切需要我们命名,成为标识符

[必] 变量名可以以_,$,英文字母开头

[必]其他部分可以是_,$,英文字母,和数字

[必] 变量名不能是关键字和保留字

[选]变量名要望文知义

[选]如果有多个单词,使用驼峰命名法,单词首字母大写

  1. 大驼峰:每个单词首字母大写

  2. 小驼峰:除第一个单词外,首字母大写

目前,使用的标识符都是小驼峰命名法。

  • 声明和赋值合并

变量的声明和赋值可以一条语句书写。

   var a = 1;
        // 程序实际执行的过程
        var a;
        a = 1;

这是语法糖。

语法糖仅仅是为了方便代码书写或记忆,程序执行并不会有实质性的改变。

  • 多个变量可以合并声明并赋值 (单一var模式)
        var a = 1,
            b = 2,
            c = 'wjh';

        // 程序实际运行过程
        var a;
        var b;
        var c;
        a = 1;
        b = 2;
        c = 'wjh';

语法糖

变量中有哪些潜规则?

  • 任何可以书写数据的地方,都可以书写变量

  • 若使用一个未声明的变量,会导致错误

例外:使用typeof得到类型时,可以是未声明的变量,得到的结果是undefined

 console.log(typeof a); // undefined
  • JS中存在变量提升

所有变量的声明,会自动的提到代码的最顶部。但是,这种提升,不会超越脚本块。(所有的变量声明会提升到当前脚本块代码的最顶端。)

通过一个看一窜代码运行问题来解释

        console.log(a,b); //undefined undefined
        var a = 1;
        var b;
        console.log(a,b); // 1 undefined

js代码是从上到下执行,第一句执行 console.log(a,b); 当时 a和b 还没声明,按说应该报错,但是为什么没报错呢?

这其中发生了变量提升的过程。 实际上代码执行内部是这样的

        var a;
        var b;
        console.log(a,b);
        a = 1;
        console.log(a,b);

看完这个 上面的答案就清晰啦。

<script>
    console.log(a, b); // 报错
</script>
<script>
    // console.log(a, b);
    // var a = 1;
    // var b;
    // b = 3;

    //等效于
    var a;
    var b;
    console.log(a, b);
    a = 1;
    b = 3;
</script>
  • JS中允许定义多个同名变量

同名变量,提升后会变成一个。

        console.log(myName); //undefined
        var myName = 'wjh';
        var myName = '234';
        console.log(myName);// '234'
        //实际发生过程
        var myName;
        console.log(myName);
        myName = 'wjh';
        myName = '234';
        console.log(myName);