js中的基本类型与引用类型学习
一、基本数据类型
ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String,也称为基本数据类型,ES6中又增加了一种Symbol。
基本数据类型是存放在栈(stack)中的简单数据,由stack自动分配内存空间,数据大小确定,他们是直接按值存放的,所以基本数据类型的访问可以直接按值访问,他们会由系统自动释放。任何方法都不能改变基本类型的值,基本类型的比较是值的比较。
1、undefined类型 ---- 只有一个值,即undefined。当声明的变量未初始化 时,该变量的默认值是undefined;
var unType; //声明变量未赋值
console.log(unType); // undefined
console.log(typeof unType); // undefined
console.log(unType == undefined); //true
console.log(unType === undefined); //true
2、null 类型 ---- 也是只有一个专用值 null,即它的字面量。值undefined实际上是从null派生而来的,因此ECMAScript把它们定义为相等的。
console.log(null == undefined); // true
虽然这两个值相等,但它们的含义是不同的,null 用于表示尚未存在的对象,如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
3、boolean(布尔)类型 ---- 它有两个值 true 和 false(即两个boolean字面量)。
4、number类型 ---- 既可以表示32位的整数,也可以表示64位的浮点数。
几个特殊的number值:Number.MAX_VALUE 、Number.MIN_VALUE、Infinity(表示无穷大)、NaN(Not a Number)..........
具体可学习w3school。
5、string类型 ---- 字符串类型,是唯一一个没有固定大小的原始类型。
6、Symbol类型 ---- 表示独一无二的值,通过Symbol函数生成。
二、引用数据类型
引用数据类型除了上述的基本类型之外就是引用类型了,function、array、object、regex.....(js中出了基本数据类型以外的都是对象)
引用数据类型是存放在堆(heap)内存中的对象,heap是动态分配的内存,每个空间大小不一样,要根据情况进行特定的配置,也不一定会自动释放。变量保存的是在栈内存中的一个指针(保存的是堆内存中的引用地址),指针指向的是堆内存。在复制引用类型值的时候,其实只复制了指向该内存的地址。引用类型的值是可变的,引用类型的比较是引用的比较,也就是比较两个对象在堆内存中的地址是否相同。
例1:
var object1 = {};
var object2 = {};
console.log(object1 == object2); // false
解析如图:
例2:
学习随笔,如有不周,望请海涵,欢迎小伙伴们各种讨论、指正。
js中的基本类型与引用类型学习的更多相关文章
- js中的值类型和引用类型的区别
1.JavaScript中的变量类型有哪些? (1)值类型(基本类型):字符串(String).数值(Number).布尔值(Boolean).Undefined.Null (这5种基本数据类型是按 ...
- js 中的值类型和引用类型
javascript中值类型(基本类型):number,string,bool,undefined,null(这5种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值) 引用类型:对象(Ob ...
- 由js apply与call方法想到的js数据类型(原始类型和引用类型)
原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...
- C# 中的值类型和引用类型
原文 C# 中的值类型和引用类型 值类型(value type):int,long,float,double,decimal,char,bool 和 struct 统称为值类型.值类型变量声明后,不管 ...
- C++ : 从栈和堆来理解C#中的值类型和引用类型
C++中并没有值类型和引用类型之说,标准变量或者自定义对象的存取默认是没有区别的.但如果深入地来看,就要了解C++中,管理数据的两大内存区域:栈和堆. 栈(stack)是类似于一个先进后出的抽屉.它的 ...
- C#中的值类型和引用类型,深拷贝,浅拷贝
from https://www.jianshu.com/p/2d27b06e253f 一.C#中的值类型和引用类型 概念 值类型直接存储其值. 引用类型存储对值的引用. 说起来有些拗口,其本质是Va ...
- 浅谈C#中的值类型和引用类型
在C#中,值类型和引用类型是相当重要的两个概念,必须在设计类型的时候就决定类型实例的行为.如果在编写代码时不能理解引用类型和值类型的区别,那么将会给代码带来不必要的异常.很多人就是因为没有弄清楚这两个 ...
- 【.Net】浅谈C#中的值类型和引用类型
在C#中,值类型和引用类型是相当重要的两个概念,必须在设计类型的时候就决定类型实例的行为.如果在编写代码时不能理解引用类型和值类型的区别,那么将会给代码带来不必要的异常.很多人就是因为没有弄清楚这两个 ...
- .NET中的值类型与引用类型
.NET中的值类型与引用类型 这是一个常见面试题,值类型(Value Type)和引用类型(Reference Type)有什么区别?他们性能方面有什么区别? TL;DR(先看结论) 值类型 引用类型 ...
随机推荐
- 14-matlab排序
冒泡和选择: clc; clear; n = 10; %输入数据的个数 suct = 0; %素数的个数 unsuct = 0;%非素数的个数 % a = [33 34 2 34 24 56 3 17 ...
- yii使用gii创建后台模块与widget使用
yii使用gii创建后台模块与widget使用 1.在protected/config/main.php中打开gii的配置属性. 'gii'=>array( 'class'=>'syste ...
- Spark设计思想浅析
Spark is no rocket science!——博主 了解分布式计算的朋友,一定知道DAG这样一个概念.其实我接触DAG也是在学习MapReduce时了解到的.(具体可查阅<大数据日知 ...
- x-www-form-urlencoded
就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对,比如,name=java&age = 23 postman: 2.ajax传值
- 直压到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台
GTX Compressor (直压上云技术预览版) Powered by GTXLab of Genetalks. 技术预览版本下载地址: https://github.com/Genetalks/ ...
- 在命令提示符(cmd)下怎样复制粘贴
我们把鼠标放在面板的上方,右击,界面显示如下: 我们选择“属性”,单击,界面显示如下: 我们点选“快速编辑模式”,再点击“确定”,这样设置就完成了,界面显示如下: 我们在面板中随意选择 ...
- java拷贝文件到另一个目录下
package com.util; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream ...
- UVa 11167 Monkeys in the Emei Mountain (最大流)
题意:雪雪是一只猴子.它在每天的 2:00 —— 9:00之间非常渴,所以在这个期间它必须喝掉2个单位的水.它可以多次喝水,只要它喝水的总量是2.它从不多喝,在一小时内他只能喝一个单位的水.所以它喝水 ...
- Linux下Git安装及配置
转载自:https://blog.csdn.net/u013256816/article/details/54743470:加了一些自己的注释. yum安装 这里采用的是CentOS系统,如果采用yu ...
- POP介绍与使用实践(快速上手动画)[转]
前言 动画在APP开发过程中 大家多多少少都会接触到 而且随着ios7的扁平化风格启用之后 越来越多的APP开始尝试加入各种绚丽的动画交互效果以增加APP的用户体验(当然 还是以国外的APP居多) 有 ...