简单数据类型

    值类型:在存储变量中的是值本身
    简单数据类型 null返回的是空的对象
    string,number,Boolean,undefined,null

繁杂数据类型

    引用类型:在存储变量中仅仅是地址,因此叫做引用数据类型
 通过new关键字创建的对象(系统对象,自定义对象)

栈、堆

    栈:由操作系统分配释放存放函数的参数值,局部变量的值等。其他操作方式类似于数据结构中的栈
    简单数据类型存放到栈里面 里面之间开辟空间存值
    堆:存储繁杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收
    繁杂数据类型存放到堆里面 首先在栈里面存放地址 16进制 地址指向堆里面的数据
    简单类型传参
    函数的形参可以看做是一个变量,当我们把一个值类型的变量做为参数传给函数形参的时候,其实就是把变量在栈空间里面的值复制了一份给形参,那么在方法内部对形参做任何修改都不会影响外部的变量
    繁杂类型传参
    函数的形参可以看做是一个变量,当前面把引用类型变量传给形参的时候,其实就是把变量在栈空间保存的堆地址复制给了形参,形参和实参保存的是同一个堆地址,所以操作的是同一个对象
 
    // 简单类型传参
function fn(a) {
a++;
console.log(a);
}
var x = 10;
fn(x)
console.log(x); // 繁杂类型传参
function Person(name) {
this.name = name;
} function fn1(x) {
console.log(x.name);
x.name = '张学友'
console.log(x.name); }
var p = new Person("刘德华")
console.log(p.name);
fn1(p)
console.log(p.name);
 

javascript 简单、繁杂类型、栈、堆笔记的更多相关文章

  1. javascript简单性能问题及学习笔记

    最近在看一本书:<高性能javaScript>,发现自己平时写js存在很多小细节上的问题,虽然这些问题不会导致程序运行出错,但是会导致界面加载变慢,用户体验变差,那么我们就来细细数一下应该 ...

  2. C#基础知识系列二(值类型和引用类型、可空类型、堆和栈、装箱和拆箱)

    前言 之前对几个没什么理解,只是简单的用过可空类型,也是知道怎么用,至于为什么,还真不太清楚,通过整理本文章学到了很多知识,也许对于以后的各种代码优化都有好处. 本文的重点就是:值类型直接存储其值,引 ...

  3. iOS数据存储类型 及 堆(heap)和栈(stack)

    iOS数据存储类型 及 堆(heap)和栈(stack) 一般认为在c中分为这几个存储区: 1栈 --  由编译器自动分配释放. 2堆 --  一般由程序员分配释放,若程序员不释放,程序结束时可能由O ...

  4. 【你不知道的javaScript 中卷 笔记1】javaScript中的类型与值

    一.类型与值 1.0 javaScript 七种内置类型: 空值(null) 未定义(undefined) 布尔值( boolean) 数字(number) 字符串(string) 对象(object ...

  5. 《javascript高级程序设计》读书笔记(一)javascript简单介绍

    第一章:javascript简单介绍 Netscape Navigator 开发的javascript   Javascript的实现有三部分: 1.核心(ECMAScript):提供核心语言功能. ...

  6. javascript学习-基本类型

    javascript学习-基本类型 1.概述 javascript的数据类型大体上分两种:基本类型和对象类型.简单的区分就是基本类型是无法再分的原子级类型:对象类型是容器,可以容纳基本类型和对象类型. ...

  7. 从IntToHex()说起,栈/堆地址标准写法 good

    学习中的一些牢骚.栈/堆地址标准写法. 2017-02-12 • 杂谈 • 暂无评论 • 老衲 •浏览 226 次 我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件.下面是我的写法,如果 ...

  8. javascript数据结构与算法---栈

    javascript数据结构与算法---栈 在上一遍博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈 ...

  9. 使用javascript判断浏览器类型

    之前在项目中遇到过要针对不同浏览器做不同的一些js或者css操作,后来某个朋友也突然问到这个问题,所以,整理了一下,在这里留个笔记,方便以后使用. 使用javascript判断浏览器类型: funct ...

随机推荐

  1. Linux 通过源代码安装和编译程序

    Linux源代码安装在平常工作学习中经常用到,总结下步骤↓↓↓ 第一步:#mount /dev/cdrom/mnt (挂载一个软盘) 第二步:手动安装httpd-2.4.25.tar.gz 依赖关系包 ...

  2. 问题:win10缺少一个或多个网络协议

    国庆回家,家里电脑连不上网了,诊断给出的结果是“缺少一个或多个网络协议” 网上这类问题提问的不少,回答的方法也是各种各样,一个一个试下来,发现这个方法是可行的. 1.打开设置--网络和Internet ...

  3. 使用nvm安装node,运行node报错 node: command not found

    1. 使用nvm安装node之后,直接运行node命令会报错 node: command not found 需要使用nvm ls  查询一下当前使用的安装的node版本,然后使用node use 版 ...

  4. CppUnit使用和源码解析

    前言 CppUnit是一个开源的单元测试框架,支持Linux和Windows操作系统,在linux上可以直接进行源码编译,得到动态库和静态库,直接链接就可以正常使用,在Windows上可以使用VC直接 ...

  5. vue中引入jq的步骤--以及注意事项

  6. Docker 入门教程(2)——image与container

    image镜像 Definition of: image Docker images are the basis of containers. An Image is an ordered colle ...

  7. Spring Boot+MyBatis+MySQL读写分离

    读写分离要做的事情就是对于一条sql语句该选择去哪个数据库执行,至于谁来做选择数据库的事情,无非两个,1:中间件(比如MyCat):二:程序自己去做分离操作. 但是从程序成眠去做读写分离最大的弱点就是 ...

  8. 移动端rem字体适配JS

    // 『REM』手机屏幕适配,兼容更改过默认字体大小的安卓用户 function adapt(designWidth, rem2px) { // designWidth:'设计图宽度' 1rem==r ...

  9. PHP log10() 函数

    实例 返回不同数的以 10 为底的对数: <?phpecho(log10(2.7183) . "<br>");echo(log10(2) . "< ...

  10. PHP exit() 函数

    实例 输出一条消息,并退出当前脚本: <?php$site = "http://www.w3cschool.cc/";fopen($site,"r")or ...