• js数据类型详解


    一、js数据类型分类

      (1)原始数据类型(值类型)

        null  空类型,变量声明了并赋值为null。转化为数字是0

        undefined  未定义,变量声明了但未赋值。转化为数字为NaN

        boolean  布尔类型

        string    字符串

        number  数值

      (2)对象数据类型(引用类型)

        Object  Array  Date Function RegExp

        特殊引用类型:String Boolean Number (包装类型)

      (3)装箱和拆箱

      问题:字符串是值类型,为什么还可以使用方法

      原因:js代码执行分2个过程:预解析,执行。

      基本包装类型:本身是基本类型,但在代码的执行过程中,调用了属性或方法,JS解析引擎会自动对其进行包装,此时这个变量就是基本包装类型的对象。  

    //装箱
    var
    name = "xiaoming";    //先变量提升,声明name变量:在栈区分配一块空间,name指向这个地址。再执行代码,name变量赋值,遇到“”,判断为字符串类型。xiaoming存储在分配的栈区中 console.log(name.toString);  //遇到toString方法,JS解析引擎创建name的对象(即String对象),调用其方法,这行代码执行结束,销毁String对象。
    //拆箱
    var
    num =new Number("123");
    console.log(num);  //Number{},num是一个对象 console.log(num
    -1);  //122,是一个整数。在做减法运算时,系统自动调用了num.valueOf方法,返回对象的原始值

    二、js数据在内存的存储位置

      不同的编程语言,其变量的存储形式不同:js是解释性脚本语言,变量存在栈区和堆区

        栈区:存储值类型数据(原始数据类型)

          特点:1. 存储的值大小固定,不可更改里面的数据。

             2. 空间较小,有限制,超过则报stack overflow

             3. 可以直接操作其保存的变量值,运行效率高

             4. 由系统自动分配存储空间。在声明变量时就分配好了内存空间  

        此类数据变量名指向的地址中存储的就是数据

    var name = "aa";
    name += "bb";  //重新分配了一块空间存储aabb,并将name指向新值。(并没有改变原来name空间的值)

        堆区:存储引用类型数据(对象)

          特点:1. 存储的值大小不定,可动态调整

             2. 空间较大,运行效率低

             3. 无法直接操作其内部存储,使用引用地址读取

             4. 通过代码进行分配空间(代码执行到创建对象位置)

        此类数据变量名指向的地址中存储的还是一个地址

    C语言变量在内存里面的存储:
    1.栈区(stack)— 由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。
    2.堆区(heap) — 一般由程序员分配释放, 用来存储数组,结构体,对象等。若程序员不释放,程序结束时可能由OS回收。
    3.全局区(静态区)(static)— 存放全局变量、静态数据、常量。程序结束后由系统释放。
    4.文字常量区 — 常量字符串就是放在这里的。 程序结束后由系统释放。
    5.程序代码区 — 存放函数体(类成员函数和全局函数)的二进制代码。

    三、JS中参数传递

      js中参数传递全部为值传递

    四、JS数据类型转换

      1. 自动转化规则:(隐式转化)

      

       

  • 相关阅读:
    IIS下 多站点 利用虚拟目录 访问共用(图片)文件夹
    [转]Prevent opening multiple windows in ASP.NET
    [转]使用 WebForms ReportViewer 控件
    ALTER TABLE ADD 增加多个字段 外键约束
    获取数据库内某时间点后修改的存储过程
    SQL Server 示例数据库 AdventureWorks 数据字典
    [转]MVC 3.0 在各个版本IIS中的部署
    [转]使用jQuery.ajax傳送物件陣列給ASP.NET MVC
    [转]报表统计(sql面试题)
    扑克游戏 – 打联手
  • 原文地址:https://www.cnblogs.com/fanshehu/p/11970195.html
Copyright © 2020-2023  润新知