一、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. 自动转化规则:(隐式转化)

  

  

js数据类型详解的更多相关文章

  1. MySQL 数据类型 详解

    MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...

  2. oracle 数据类型详解---日期型(转载)

    oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTER ...

  3. js对象详解(JavaScript对象深度剖析,深度理解js对象)

    js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...

  4. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

  5. python 数据类型详解

    python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...

  6. redis详解(二)-- 数据类型详解

    Redis常用数据类型详解 1,Redis最为常用的数据类型主要有以下: String Hash List Set Sorted set pub/sub Transactions 在具体描述这几种数据 ...

  7. python数据类型详解(全面)

    python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...

  8. 转 python数据类型详解

    python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...

  9. 2-2和2-3基本数据类型 & 2-4基本数据类型详解 & 3-1和3-2整形字面量值及变量声

    2-4基本数据类型详解 3-1和3-2整形字面量值及变量声 023是八进制的 0x1357是十六进制 0X3C也是十六进制 0x1abL:长整型 变量声明 数据类型 空格 变量名 赋值: 变量的定义:

随机推荐

  1. AtCoder - 2286 (数论——唯一分解定理)

    题意 求n!的因子数%1e9+7. 思路 由唯一分解定理,一个数可以拆成素数幂之积,即2^a * 3^b *……,n!=2*3*……*n,所以计算每个素因子在这些数中出现的总次数(直接对2~n素因子分 ...

  2. 17.Java基础_初探类的private和public关键字

    package pack1; public class Student { // 成员变量 private String name; private int age; // get/set方法 pub ...

  3. socket.error: [Errno 10048]

    socket.error: [Errno 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次 经过搜索发现这个提示是在端口冲突的时候出现,可能的原因是在服务器程序中创建一个Sock ...

  4. 剑指Offer-6.旋转数组的最小数字(C++/Java)

    题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...

  5. luoguP1791 [国家集训队]人员雇佣

    题意 考虑先将所有价值加上,之后用最小割求最小代价. 考虑每个点对\((i,j)\),我们这样建边: 1.源点向每个点i连\(\sum\limits E_{i,j}\)容量的边. 2.每个点向汇点连雇 ...

  6. ajax技术初识与应用

    一.ajax技术初识 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.Ajax不是一种新的编 ...

  7. hdu6468 dfs剪枝 or char数组 or 构造

    http://acm.hdu.edu.cn/showproblem.php?pid=6468 题意 有一个序列,是1到n的一种排列,排列的顺序是字典序小的在前,那么第k个数字是什么?(\(1 \leq ...

  8. 深度解密Go语言之context

    目录 什么是 context 为什么有 context context 底层实现原理 整体概览 接口 Context canceler 结构体 emptyCtx cancelCtx timerCtx ...

  9. LeetCode 209:最小长度的子数组 Minimum Size Subarray Sum

    公众号: 爱写bug(ID:icodebugs) 作者:爱写bug 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子 ...

  10. oracle使用sequence批量写数据

    本博客是对之前写的博客Oracle批量新增更新数据的补充,oracle的知识真是多,其实要学精任何一门知识都是要花大量时间的,正所谓: 学如逆水行舟,不进则退 先介绍oracle sequence的一 ...