我的JS笔记 -- 变量

作者: 骷髅不会笑丶 | 来源:发表于2017-12-13 21:56 被阅读28次

    变量是存储信息的容器,在JS中,变量是松散类型的,所以JS中的变量可以用来保存任何类型的数据。所以变量是没有类型的,值才有。

    变量标识符

    标识符是指变量、函数和属性的名字,或者函数的参数,标识符需要满足一下条件:

    • 第一个字符必须是一个字符、下划线_或一个美元符号$

    • 其他字符可以是字母、下划线、美元符号或数字;

    • JS中有一组具有特殊用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作,这些关键字不可用于标识符;另外还有一组可能将来被用作关键字的保留字,最好也不要用保留字作为标识符;

        var case = 1; // 报错,case为关键字
        var char = 2; // 未报错,但char为保留字,建议不要用于标识符
      

    定义变量

    在JS中变量的定义会被分为两步,变量声明和变量赋值。

    var a = 1; // 声明变量并赋值
    
    // 上面可以拆分为两步
    var a; // 变量声明
    a = 1; // 变量赋值
    
    var b; // 声明变量未赋值,变量值为undefined
    

    上面的代码我们使用了var操作符定义变量,变量将会作为变量所在作用域中的局部变量。如果在函数中使用var定义一个变量,那么这个变量在函数退出后将会被销毁。

    如果未用var操作符而直接对变量进行赋值,变量将会自动声明成为全局变量,在浏览器中全局变量会作为window对象的属性。

    a = 1; // 未使用var
    window.a // 1
    

    在变量声明之后再声明同名变量

    var a = 1; 
    a // 1
    var a = 2; // 再次声明赋值同名变量,变量声明已经有同名的,所以重复的var声明被忽略,但赋值不会,所以a被赋新值2
    a //  2
    var a; // 再次声明同名变量,变量声明已经有同名的,所以重复的var声明被忽略,这条语句无效
    a // 2
    

    变量值的类型

    JS变量仅仅是一个保存值的占位符而已,所以变量的值可以是任何类型的数据。

    在JS中数据有七种内置类型:空值( null)、未定义( undefined)、布尔值( boolean)、数字( number)、字符串( string)、对象( object)、符号( symbol, ES6 中新增)。null,表示一个空对象指针,用于将来保存对象但还没有真正保存对象时,变量初始化的值;undefined,表示变量已声明但未初始化赋值;Boolean,布尔类型,布尔(逻辑)只能有两个值:true 或 false;string,字符串是储存字符的变量;number,数字类型;object,对象是一组数据和功能的集合。

    var a = 1; // 变量值可以是基本类型
    a = function () { console.log(2) }; // 修改变量的值为一个函数
    

    变量值还有另一种类型区分方式,分为基本类型值(如undefined、null、boolean、number、string)和引用类型值(如object)。

    • 基本类型值,保存在栈内存,这种值完全保存在内存的一个位置;

        var a = 1;
        var b = a;
        b = 2;
        a // 1,基本类型值通过值复制传递,两个值之间相互独立,不会互相影响
      
    • 引用类型值,保存在堆内存,变量保存的实际上只是一个指针,这个指针指向内存中的一个位置,该位置保存对象;

        var a = [1];
        var b = a;
        b.push(2);
        a // [1, 2],引用类型通过引用复制传递,两个变量指向同一个对象,会相互影响
      

    更多文章在 这里 ,觉得不错希望点个 star

    相关文章

      网友评论

        本文标题:我的JS笔记 -- 变量

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