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. 自动转化规则:(隐式转化)
js数据类型详解的更多相关文章
- MySQL 数据类型 详解
MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...
- oracle 数据类型详解---日期型(转载)
oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTER ...
- js对象详解(JavaScript对象深度剖析,深度理解js对象)
js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...
- python之数据类型详解
python之数据类型详解 二.列表list (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...
- python 数据类型详解
python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...
- redis详解(二)-- 数据类型详解
Redis常用数据类型详解 1,Redis最为常用的数据类型主要有以下: String Hash List Set Sorted set pub/sub Transactions 在具体描述这几种数据 ...
- python数据类型详解(全面)
python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...
- 转 python数据类型详解
python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...
- 2-2和2-3基本数据类型 & 2-4基本数据类型详解 & 3-1和3-2整形字面量值及变量声
2-4基本数据类型详解 3-1和3-2整形字面量值及变量声 023是八进制的 0x1357是十六进制 0X3C也是十六进制 0x1abL:长整型 变量声明 数据类型 空格 变量名 赋值: 变量的定义:
随机推荐
- CodeForces - 1255D (模拟+构造+贪心)
题意 https://vjudge.net/problem/CodeForces-1255D rxc的农场里'R'表示有米,现在有K只鸡,给这k只鸡选一些格子,每个鸡可以有多个格子(每个鸡至少吃一个米 ...
- Vue工程化入口文件main.js中Vue.config.productionTip = false含义
阻止启动生产消息,常用作指令.通俗理解为消息提示的环境配置. 阻止启动生产消息 這又是什麽意思? 看下效果 (1)Vue.config.productionTip = false (2)Vue.con ...
- 泛型T
作用: 使用泛型类型可以最大限度地重用代码.保护类型的安全以及提高性能. 泛型最常见的用途是创建集合类 1.性能:如List<object> 与 List<T> 将一个 int ...
- C语言异常处理
异常的概念-程序在运行过程中可能产生异常-异常(Exception)与Bug的区别 异常是程序运行时可预料的执行分支 Bug是程序中的错误,是不被预期的运行方式 异常(Exception)和Bug的对 ...
- 关于SPFA算法的优化方式
关于SPFA算法的优化方式 这篇随笔讲解信息学奥林匹克竞赛中图论部分的求最短路算法SPFA的两种优化方式.学习这两种优化算法需要有SPFA朴素算法的学习经验.在本随笔中SPFA朴素算法的相关知识将不予 ...
- 第九周周四计划&&周三总结
今天由于自己的原因进度不是很大,今天整理了一下全网关联的思路流程(个人可能就是那种没自信,在思路不知道对不对的情况下不敢下手那种渣渣),和之前的一个学长讨论了一下大概思路流程,如下: (1)使用LDA ...
- luoguP4097 [HEOI2013]Segment
题意 李超树板子题. 对每个区间维护该区间中点\(mid\)的最优线段. 插入一个线段: 求出这个线段的斜率和截距,注意特判无斜率的情况,得到\(y=kx+b\). 之后开始在线段树上插入,假设当前节 ...
- 深圳龙华有轨电车BIM项目
本项目是“龙华有轨电车BIM+GIS运维管理平台“研发组成的内容之一,包含站台.电车.变电所等模型绘制. 龙华区有轨电车是深圳市的一条位于龙华区的有轨电车线路,项目规划了三条线路,总长51公里.试验线 ...
- Reids Lua 模糊查询所有key 及 相对应的集合总数
Redis 使用 Lua 模糊查询所有key 及 相对应的集合总数 .Net 4.5.1 需要引入: StackExchange.Redis (测试用的 1.2.4.0) 方法一: 优点:原子 ...
- VS 插件 ReSharper 的个人习惯
个人习惯 1. 按 F12 恢复转到定义 很多时候,我个人不太喜欢一按 F12 就跳转到 ReSharper 自带的 查看代码浏览器,我还是喜欢 VS 默认的,于是点击菜单栏的 "RESHA ...