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:长整型 变量声明 数据类型 空格 变量名 赋值: 变量的定义:
随机推荐
- C++学习一 结构与结构体
结构体属于C++与C区别之一. 代码例子如下(来自<C++程序设计>): #include <iostream> #include <string> using n ...
- Redis windows版本资源与安装
这里提供一个windows版本的Redis百度云资源 链接: https://pan.baidu.com/s/19JY_d_J87n98OeAHK9qI4A 密码: d6dq 1,GitHub下载地址 ...
- C++标准库删除字符串中指定字符,比如空格
参见:https://zh.cppreference.com/w/cpp/algorithm/remove 使用 erase 和 remove 配合. #include <algorithm&g ...
- LG1337 [JSOI2004]平衡点 / 吊打XXX 模拟退火
问题描述 LG1337 题解 模拟退火模板 记住概率公式: \(exp(\frac{dealt}{T}) \times rand \ge R_A^ND^M_AX\) zzk太欧了,我交了一版没过他来了 ...
- 用arthas查看JVM已加载的类及方法信息
1.sc:“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,这个命令支持的参数有 [d].[E].[f] 和 [x:]. [d] 输出当前类的详细信 ...
- ORB-SLAM2初步(Tracking.cpp)
今天主要是分析一下Tracking.cpp这个文件,它是实现跟踪过程的主要文件,这里主要针对单目,并且只是截取了部分代码片段. 一.跟踪过程分析 首先构造函数中使用初始化列表对跟踪状态mState(N ...
- keras.preprocessing.text.Tokenizer
说明:num_words的参数设置,对应着sequences_to_matrix方法返回的arrray的shape[1],用于约束返回数组的第2个维度.对texts_to_sequences(text ...
- Java 基础系列:不变性
1.1 定义 不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量. 可变类(Mutable Objects):类的实例创建后,可以修改其内容. ...
- 代码问题【TADT//CVPR2019】
paper:Li X, Ma C, Wu B, et al. Target-Aware Deep Tracking[C]. //CVPR2019 调用adam.m时候报错 结构体内容引用自非结构体数组 ...
- webpack-dev-server 不是内部或外部命令,也不是可运行的程序 解决方案
我看了网上的 一些解决方案,说是webpack版本不对,但我按照提示操作后依然不行: 要先确认是否安装了webpack-dev-server,如果没有安装,安装便可以解决: 粗暴的解决方案是删除nod ...